WsSendFaultMessageForError 函数 (webservices.h)
在给定 WS_ERROR 对象的情况下发送错误消息。
语法
HRESULT WsSendFaultMessageForError(
[in] WS_CHANNEL *channel,
[in] WS_MESSAGE *replyMessage,
[in] WS_ERROR *faultError,
[in] HRESULT faultErrorCode,
[in] WS_FAULT_DISCLOSURE faultDisclosure,
[in] WS_MESSAGE *requestMessage,
[in, optional] const WS_ASYNC_CONTEXT *asyncContext,
[in, optional] WS_ERROR *error
);
参数
[in] channel
要发送消息的通道。
[in] replyMessage
用于发送答复消息的消息对象。
消息对象应位于 WS_MESSAGE_STATE_EMPTY 或 WS_MESSAGE_STATE_INITIALIZED中。 如果提供了已初始化的消息,则应使用 WS_FAULT_MESSAGE 对其进行初始化。
[in] faultError
用于构造错误的 error 对象。
[in] faultErrorCode
与错误关联的错误代码。 这不能是成功代码。
此错误代码永远不会直接包含在错误消息中,而是在 WS_ERROR 对象不包含任何错误字符串的情况下用作创建错误字符串的回退机制。
[in] faultDisclosure
控制错误消息中包含的错误信息量。
[in] requestMessage
请求消息。 这用于获取用于表述回复消息的相关信息。
消息可以处于任何状态,但 WS_MESSAGE_STATE_EMPTY。
[in, optional] asyncContext
有关如何异步调用函数的信息;如果以同步方式调用,则为 NULL 。
[in, optional] error
指定函数失败时应存储其他错误信息的位置。
返回值
此函数可以返回其中一个值。
返回代码 | 说明 |
---|---|
|
异步操作仍处于挂起状态。 |
|
操作已中止。 |
|
由于对象的当前状态,不允许该操作。 |
|
与远程终结点的连接已终止。 |
|
输入数据未采用预期格式或没有预期值。 |
|
操作未在分配的时间内完成。 |
|
超出配额。 |
|
收到的数据的安全验证未成功。 |
|
Windows Web Services 框架中的安全操作失败。 |
|
内存不足。 |
|
一个或多个参数无效。 |
|
此函数可能会返回上面未列出的其他错误。 |
注解
消息正文中发送的 WS_FAULT 是使用 WsCreateFaultFromError 定义的相同规则构造的。
用于答复消息 的WS_ACTION_HEADER 的值计算如下:
- 如果 通道WS_CHANNEL_PROPERTY_ADDRESSING_VERSIONWS_ADDRESSING_VERSION_TRANSPORT,则消息中不包含任何操作,因为寻址版本不允许错误操作值。
- 如果错误对象包含操作字符串 (WS_FAULT_ERROR_PROPERTY_ACTION 返回的字符串长度大于零) ,则使用该操作字符串。
- 如果错误对象不包含操作,则提供默认操作值。
错误消息将包含与 WS_ADDRESSING_VERSION相应的关联信息。 有关关联请求回复消息的详细信息,请参阅 通道层概述 。
如果在发送错误时没有 WS_ERROR 对象,请使用 WsSendReplyMessage。
若要向消息添加自定义标头,请使用 WS_FAULT_MESSAGE 初始化消息 WsInitializeMessage,然后在调用此函数之前使用 WsAddCustomHeader 添加标头。
要求
最低受支持的客户端 | Windows 7 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows Server 2008 R2 [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | webservices.h |
Library | WebServices.lib |
DLL | WebServices.dll |