WS_SERVICE_CLOSE_CHANNEL_CALLBACK função de retorno de chamada (webservices.h)
Invocado quando um canal é fechado ou anulado em um ponto de extremidade. Esse retorno de chamada é chamado logo antes de fecharmos o canal.
Para uma operação normal quando o host de serviço está em execução e o cliente fechou o canal de forma limpa, isso implica que recebemos um fechamento de sessão do cliente e estamos prestes a fechar o canal.
O outro cenário é quando o host de serviço está passando por um desligamento de anulação ou durante o processamento da mensagem uma condição de erro irrecuperável é atendida, como resultado disso, tentamos anular e fechar o canal. Nesse caso, bem antes da anulação, chamaremos esse retorno de chamada.
Para o contrato de serviço baseado em sessão, essa notificação significa a desativação da sessão. Portanto, um estado de aplicativo com escopo para a sessão pode ser destruído dentro desse retorno de chamada.
Sintaxe
WS_SERVICE_CLOSE_CHANNEL_CALLBACK WsServiceCloseChannelCallback;
HRESULT WsServiceCloseChannelCallback(
[in] const WS_OPERATION_CONTEXT *context,
[in, optional] const WS_ASYNC_CONTEXT *asyncContext
)
{...}
Parâmetros
[in] context
O contexto da operação.
[in, optional] asyncContext
Informações sobre se a função está sendo invocada de forma assíncrona.
Retornar valor
Essa função de retorno de chamada não retorna um valor.
Comentários
O HRESULT retornado só é usado para ver se a função está sendo concluída de forma assíncrona. Falha ou relatório de falha por meio do HRESULT não afeta de forma alguma a infraestrutura do host de serviço.
Independentemente de WS_SERVICE_ACCEPT_CHANNEL_CALLBACK competiram com êxito ou não. Essa função sempre será acionada.
Consulte também WS_SERVICE_ACCEPT_CHANNEL_CALLBACK que pode ser usado pelo aplicativo para associar o estado e é chamado quando um canal é aceito.
Para obter um exemplo de implementação sobre como usar esse retorno de chamada para desassociar o estado da sessão, consulte o exemplo de calculadora baseada em sessão.
Esse retorno de chamada é cancelável.
Exemplos
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;
}
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 7 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2008 R2 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | webservices.h |