Поделиться через


Завершение сеанса SOAP

Для завершения сеанса в запросе должен быть определен заголовок sqlSession с наборами атрибутов sessionId и terminate. Атрибут sessionId указывает на известный сеанс, когда сервер находится в доступном состоянии на сервере, и значение атрибута terminate должно равняться true.

Если сеанс с указанным идентификатором не существует, то с атрибутом terminate в заголовке sqlSession возвращается ошибка SOAP.

Если запрос выполняется в контексте безопасности или конечной точке, отличных от тех, которые инициировали сеанс, то возвращается ошибка SOAP, и сеанс остается неизмененным.

При явном завершении никаких новых запросов в текущем сеансе не принимается. Сеанс закрывается, когда завершается выполнение последнего пакета сеанса. Им должен быть не обязательно тот пакет, который запрашивал прекращение сеанса.

Примеры

В следующих примерах показывается завершение сеанса SOAP. Для завершения сеанса клиент SOAP отправляет запрос, подобный приведенным ниже, с известным и допустимым значением атрибута sessionId и атрибутом terminate со значением true:

<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, and terminate it -->
    <sqloptions:sqlSession terminate="true" sessionId="AAAAADreaLE="/>
</SOAP-ENV:Header>

Запросы на завершение сеанса могут быть пустыми или обладать текстом сообщения. Если присутствует текст, то заголовок атрибута terminate обрабатывается и подтверждается независимо от ошибок, которые могут возникнуть во время выполнения метода.

Затем сервер возвратит подтверждение, подобное приведенному ниже, указывающее на то, что сеанс завершен.

<SOAP-ENV:Header
  xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"
  xmlns:sqloptions="https://schemas.microsoft.com/sqlserver/2004/SOAP/Options">
    <!-- response to terminating an existing session -->
    <sqloptions:sqlSession terminate="true" sessionId="AAAAADreaLE="/>
</SOAP-ENV:Header>

Чтобы убедиться в том, что процесс прекращения сеанса завершен, клиентам обычно приходится проводить поиск подтверждающего ответа от сервера. Если в течение разумного промежутка времени подтверждение клиентом не получено, то клиенту следует повторить запрос на прекращение сеанса.

См. также

Справочник

Работа с сеансами SOAP
Образцы приложений, отправляющих запросы к собственным веб-службам с поддержкой XML
Добавление заголовков SOAP в клиентские приложения

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

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

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

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