Finalizar una sesión SOAP
Para finalizar una sesión, una solicitud debe especificar el encabezado sqlSession con los atributos sessionId y terminate establecidos. El atributo sessionId debe identificar una sesión conocida del servidor que se encuentre en estado accesible en el servidor y el atributo terminate debe establecerse en un valor true.
Si no existe ninguna sesión con el Id. especificado, se devuelve un error SOAP con el atributo terminate en el encabezado sqlSession.
Si la solicitud se ejecuta en un contexto de seguridad o un extremo diferente del que inició la sesión, se devuelve un error SOAP y la sesión permanece sin modificar.
Cuando se finaliza explícitamente, no se aceptan nuevas solicitudes en la sesión. La sesión se cierra cuando se lleva a cabo el último proceso por lotes de la sesión. Éste no es necesariamente el mismo proceso por lotes en el que se solicitó realmente la terminación de la sesión.
Ejemplos
En el ejemplo siguiente se muestra cómo finalizar una sesión SOAP. Para terminar una sesión, un cliente SOAP envía una solicitud como la siguiente con el valor de atributo sessionId conocido y válido establecido y el atributo terminate especificado con un valor 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>
Las solicitudes de terminación de sesión pueden estar vacías o tener un cuerpo del mensaje. Si existe un cuerpo del mensaje, se procesa y reconoce el encabezado de terminación, con independencia de los errores que se produzcan en la ejecución del método.
A continuación, el servidor devolverá una confirmación como la siguiente para indicar que la sesión ha terminado.
<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>
Para asegurarse de que la terminación se ha llevado a cabo, suele ser necesario que los clientes recorran la respuesta de confirmación desde el servidor. Si la confirmación no se recibe en el cliente en un período de tiempo razonable, el cliente debe intentar realizar de nuevo la solicitud de terminación.
Vea también
Referencia
Usar una sesión SOAP
Enviar solicitudes de servicios Web XML nativos mediante aplicaciones de ejemplo
Agregar encabezados SOAP a aplicaciones cliente