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 |