Работа с сеансами SOAP
Для выполнения запроса SOAP в контексте существующего сеанса необходимо указать следующие данные в запросе сеанса SOAP к серверу:
- тот же самый идентификатор сеанса, который был ранее предоставлен сервером клиенту;
- соответствующий идентификатор конечной точки HTTP для конечной точки, для которой сеанс SOAP был предварительно инициализирован;
- тот же самый контекст пользователя; им является либо пользователь Windows, либо пользователь SQL Server, в зависимости от поддерживаемого значения LOGIN_TYPE в свойствах SOAP для конечной точки.
Если заданный идентификатор сеанса не существует или неверен, то элементом sqlSession возвращается сообщение о неудачном выполнении сеанса SOAP с атрибутом terminate в заголовке. В противном случае сервер возвращает заголовок sqlSession, который был послан клиентом в запросе.
Если запрос выполняется в другом контексте безопасности или в другой конечной точке, а не в той, в которой он был инициализирован, возвращается ошибка SOAP. В качестве ответа для завершения слоя SOAP будет задан код ошибки SOAP, и в заголовок sqlSession будет включен атрибут terminate со значением true.
Кроме этого, для предотвращения определения злоумышленниками того, что сеанс существует, задается атрибут terminate, и единственным откликом сервера на любой запрос, в котором сеанс, определенный для прикрепляющего объекта, неизвестен серверу, будет ошибка SOAP.
Примеры
Следующий пример показывает прикрепление сеанса SOAP. Здесь представлен формат сообщения SOAP, которое клиент посылает при запросе на прикрепление в существующем сеансе SOAP. Обратите внимание, что действительное значение sessionId
будет идентификатором сеанса:
<SOAP-ENV:Header
xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"
xmlns:sqloptions="https://schemas.microsoft.com/sqlserver/2004/SOAP/Options">
<!-- enlist in an existing session -->
<sqloptions:sqlSession sessionId="AAAAADreaLE="/>
</SOAP-ENV:Header>
Сервер будет либо отсылать сообщение обратно клиенту с указанием того, что доступ к сеансу может быть получен, либо возвращать клиенту ошибку SOAP, если доступ к указанному в запросе сеансу не может быть получен.
См. также
Справочник
Завершение сеанса SOAP
Образцы приложений, отправляющих запросы к собственным веб-службам с поддержкой XML
Добавление заголовков SOAP в клиентские приложения