Condividi tramite


WS_SERVICE_MESSAGE_RECEIVE_CALLBACK funzione di callback (webservices.h)

Richiamato quando viene ricevuto un WS_MESSAGE in un endpoint configurato con un WS_SERVICE_CONTRACT con set defaultMessageHandlerCallback.

Il WS_MESSAGE in ingresso, serviceProxy insieme ad altri parametri viene reso disponibile per il callback tramite WS_OPERATION_CONTEXT.

Sintassi

WS_SERVICE_MESSAGE_RECEIVE_CALLBACK WsServiceMessageReceiveCallback;

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

Parametri

[in] context

Contesto in cui viene richiamato il callback.

[in, optional] asyncContext

Specifica se il callback può essere eseguito in modo asincrono.

[in, optional] error

Specifica dove archiviare informazioni aggiuntive sull'errore se la funzione ha esito negativo.

Valore restituito

Questa funzione di callback non restituisce un valore.

Commenti

Se definito, il callback non consente tutte le concorrenza in un canale basato su sessione. Se la concorrenza in un canale basato su sessione è preferibile, un'applicazione non deve definire WS_SERVICE_MESSAGE_RECEIVE_CALLBACK nel WS_SERVICE_CONTRACT.

Al momento della chiamata del callback, il modello di servizio ha eseguito WsReadMessageStart sul WS_MESSAGE ricevente. È responsabilità dell'applicazione che implementa WS_SERVICE_MESSAGE_RECEIVE_CALLBACK elaborare il corpo ed eseguire l'operazione WsReadMessageEnd .

Se il callback non riesce, il canale sottostante viene interrotto.

Vedere anche UnTypedServiceExample

Esempio

Definizione di un WS_SERVICE_MESSAGE_RECEIVE_CALLBACK


// Method contract for the service
static WS_SERVICE_CONTRACT calculatorContract = 
{
    NULL, 
    NULL, 
    DefaultMessageHandlerCallback, // WS_SERVICE_MESSAGE_RECEIVE_CALLBACK
    NULL
};

Accesso alla proprietà WS_MESSAGE in ingresso

HRESULT CALLBACK MessageRecieved(const WS_OPERATION_CONTEXT* context, const WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error)
{
    :
    hr = WsGetOperationContextProperty(context, WS_OPERATION_CONTEXT_PROPERTY_INPUT_MESSAGE, &requestMessage, sizeof(requestMessage), NULL, error);
    :
}

Requisiti

Requisito Valore
Client minimo supportato Windows 7 [app desktop | App UWP]
Server minimo supportato Windows Server 2008 R2 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione webservices.h