WS_SERVICE_MESSAGE_RECEIVE_CALLBACK回调函数 (webservices.h)

在配置 defaultMessageHandlerCallback 集的WS_SERVICE_CONTRACT的终结点上收到 WS_MESSAGE 时调用。

传入 WS_MESSAGE、serviceProxy 以及其他参数通过 WS_OPERATION_CONTEXT提供给回调。

语法

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
)
{...}

参数

[in] context

调用此回调的 上下文

[in, optional] asyncContext

指定回调是否可以异步运行。

[in, optional] error

指定函数失败时应存储其他错误信息的位置。

返回值

此回调函数不返回值。

注解

定义后,回调将禁止基于会话的通道上的所有并发。 如果基于会话的通道上需要并发,应用程序不应在 WS_SERVICE_CONTRACT 上定义 WS_SERVICE_MESSAGE_RECEIVE_CALLBACK

调用回调时,服务模型已对接收WS_MESSAGE执行 WsReadMessageStart。 实现 WS_SERVICE_MESSAGE_RECEIVE_CALLBACK 的应用程序负责处理正文并执行 WsReadMessageEnd 操作。

如果回调失败,基础通道将中止。

另请参阅 UnTypedServiceExample

示例

定义WS_SERVICE_MESSAGE_RECEIVE_CALLBACK


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

访问传入 WS_MESSAGE 属性

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);
    :
}

要求

要求
最低受支持的客户端 Windows 7 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2008 R2 [桌面应用 |UWP 应用]
目标平台 Windows
标头 webservices.h