Share via


Clôture d'une session SOAP

Cette fonctionnalité sera supprimée dans une prochaine version de Microsoft SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité.

Pour terminer une session, vous devez créer une requête spécifiant l'en-tête sqlSession ainsi que le jeu d'attributs sessionId et terminate. L'attribut sessionId doit identifier une session connue accessible sur le serveur et l'attribut terminate doit correspondre à la la valeur true.

Si aucune session n'existe pour l'ID spécifié, une erreur SOAP est retournée dans l'en-tête sqlSession avec l'attribut terminate.

Si la requête est exécutée dans un autre contexte de sécurité ou à un autre point de terminaison que celui ayant servi à initialiser la session, une erreur SOAP est retournée et la session demeure inchangée.

En cas de terminaison explicite, aucune autre requête n'est acceptée sous cette session. La session est fermée lorsque le dernier traitement de la session est exécuté. Il ne s'agit pas nécessairement du même traitement pour lequel la clôture de session a été demandée.

Exemples

L'exemple suivant illustre la clôture d'un session SOAP. Pour terminer une session, le client SOAP envoie une requête comme celle ci-dessous spécifiant les valeurs connues et valides du jeu d'attributs sessionId et de l'attribut terminate, qui correspond à 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>

Les requêtes de clôture d'une session peuvent être vides ou contenir un corps de message. Dans ce dernier cas, l'en-tête est traité et fait l'objet d'un accusé de réception en dépit des erreurs survenues lors de l'exécution de la méthode.

Le serveur retourne ensuite une confirmation, comme celle ci-dessous, de la clôture de la session.

<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>

Pour s'assurer que la clôture est effective, un client doit généralement rechercher la réponse de confirmation auprès du serveur. Si le client ne reçoit pas la confirmation dans un délai raisonnable, il peut introduire une nouvelle requête de clôture.