Работа с сеансами 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 в клиентские приложения

Основные понятия

Запуск сеанса SOAP

Другие ресурсы

Работа с сеансами SOAP

Справка и поддержка

Получение помощи по SQL Server 2005