Beenden einer SOAP-Sitzung
Um eine Sitzung zu beenden, muss eine Anforderung den sqlSession-Header angeben, wenn die beiden Attribute sessionId und terminate festgelegt sind. Über sessionId muss eine bekannte Sitzung identifiziert werden, auf die auf dem Server zugegriffen werden kann, und das terminate-Attribut muss auf true festgelegt sein.
Wenn keine Sitzung mit der angegebenen ID vorhanden ist, wird ein SOAP (Simple Object Access Protocol-)Fehler zurückgegeben; hierbei ist das terminate-Attribut im sqlSession-Header enthalten.
Wenn die Anforderung in einem anderen Sicherheitskontext oder für einen anderen Endpunkt ausgeführt wird als der, der die Sitzung initiiert hat, wird ein SOAP-Fehler zurückgegeben, und die Sitzung bleibt unverändert.
Wenn die Sitzung explizit beendet wurde, werden unter der Sitzung keine neuen Anforderungen mehr akzeptiert. Die Sitzung wird geschlossen, wenn der letzte Batch innerhalb der Sitzung abgeschlossen ist. Hierbei handelt es sich nicht notwendigerweise um den Batch, in dem die Sitzungsbeendigung angefordert wurde.
Beispiele
Das folgende Beispiel zeigt das Beenden einer SOAP-Sitzung. Zum Beenden einer Sitzung sendet ein SOAP-Client eine Anforderung, die der nachfolgenden ähnelt. Hierbei ist das bekannte und gültige sessionId-Attribut festgelegt, und für das terminate-Attribut ist der Wert true angegeben:
<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>
Anforderungen zum Beenden einer Sitzung können leer sein oder einen Nachrichtentext enthalten. Wenn Nachrichtentext vorhanden ist, wird der terminate-Header verarbeitet und bestätigt, ungeachtet der Fehler, die beim Ausführen der Methode auftreten.
Daraufhin gibt der Server eine Bestätigung zurück, die der folgenden ähnelt, um anzugeben, dass die Sitzung beendet wurde.
<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>
Um sicherzustellen, dass die Beendigung abgeschlossen ist, müssen Clients normalerweise nach der Bestätigungsantwort vom Server scannen. Wenn der Client die Bestätigung nicht innerhalb eines angemessen Zeitraumes empfängt, sollte die Beendigungsanforderung wiederholt werden.
Siehe auch
Verweis
Verwenden einer SOAP-Sitzung
Beispielanwendungen für das Senden systemeigener XML-Webdiensteanforderungen
Hinzufügen von SOAP-Headern zu Clientanwendungen