Partager via


WS_SERVICE_CLOSE_CHANNEL_CALLBACK fonction de rappel (webservices.h)

Appelé lorsqu’un canal est fermé ou abandonné sur un point de terminaison. Ce rappel est appelé juste avant que nous ne sommes sur le point de fermer le canal.

Pour un fonctionnement normal lorsque l’hôte de service est en cours d’exécution et que le client a fermé le canal proprement, cela signifie que nous avons reçu une fermeture de session du client et que nous sommes sur le point de fermer le canal.

L’autre scénario est lorsque l’hôte de service passe par un arrêt d’abandon ou pendant le traitement du message, une condition d’erreur irrécupérable est remplie. Par conséquent, nous essayons d’abandonner, puis de fermer le canal. Dans ce cas aussi juste avant l’abandon, nous allons appeler ce rappel.

Pour le contrat de service basé sur une session, cette notification signifie la destruction de session. Ainsi, un état d’application limité à la session peut être détruit dans ce rappel.

Syntaxe

WS_SERVICE_CLOSE_CHANNEL_CALLBACK WsServiceCloseChannelCallback;

HRESULT WsServiceCloseChannelCallback(
  [in]           const WS_OPERATION_CONTEXT *context,
  [in, optional] const WS_ASYNC_CONTEXT *asyncContext
)
{...}

Paramètres

[in] context

Contexte d'opération.

[in, optional] asyncContext

Informations indiquant si la fonction est appelée de façon asynchrone.

Valeur retournée

Cette fonction de rappel ne retourne pas de valeur.

Remarques

Le HRESULT retourné est utilisé uniquement pour voir si la fonction se termine de manière asynchrone. L’échec ou le signalement d’une défaillance via HRESULT n’affecte en aucune façon l’infrastructure hôte du service.

Que WS_SERVICE_ACCEPT_CHANNEL_CALLBACK soit en concurrence avec succès ou non. Cette fonction est toujours déclenchée.

Consultez également WS_SERVICE_ACCEPT_CHANNEL_CALLBACK qui peut être utilisé par l’application pour associer l’état et qui est appelé lorsqu’un canal est accepté.

Pour obtenir un exemple d’implémentation sur l’utilisation de ce rappel pour dissocier l’état de session, consultez l’exemple de calculatrice basée sur la session.

Ce rappel est annulable.

Exemples

HRESULT CALLBACK FreeSessionCalculator (const WS_OPERATION_CONTEXT* context,
                                        const WS_ASYNC_CONTEXT* asyncContext)
{
     HRESULT hr = NOERROR;
     SessionfulCalculator* calculator = NULL;
     hr = WsGetOperationContextProperty (context, 
                                         WS_OPERATION_CONTEXT_PROPERTY_CHANNEL_USER_STATE, 
                                         &calculator, sizeof (SessionfulCalculator*), NULL);
     if (SUCCEEDED(hr) && (calculator != NULL))
     {                                                       
         delete calculator;
     }
     return NOERROR;
}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 7 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 R2 [applications de bureau uniquement]
Plateforme cible Windows
En-tête webservices.h