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
要用來建構錯誤的錯誤物件。
[in] faultErrorCode
與錯誤相關聯的錯誤碼。 這不可以是成功的程式碼。
此錯誤碼永遠不會直接包含在錯誤訊息中,但會改用為後援機制,以在 WS_ERROR 物件不包含任何錯誤字串的情況下建立錯誤字串。
[in] faultDisclosure
控制錯誤訊息中包含多少錯誤資訊。
[in] requestMessage
要求訊息。 這是用來取得用來制訂回復訊息的相互關聯資訊。
訊息可以處於任何狀態,但 WS_MESSAGE_STATE_EMPTY。
[in, optional] asyncContext
如何以非同步方式叫用函式的資訊,如果以同步方式叫用,則為 Null 。
[in, optional] error
指定函式失敗時應儲存其他錯誤資訊的位置。
傳回值
此函式可以傳回下列其中一個值。
傳回碼 | 描述 |
---|---|
|
非同步作業仍在擱置中。 |
|
作業已中止。 |
|
由於 物件的目前狀態,不允許此作業。 |
|
與遠端端點的連線已終止。 |
|
輸入資料不是預期的格式,或沒有預期的值。 |
|
作業未在配置的時間內完成。 |
|
超過配額。 |
|
已接收資料的安全性驗證未成功。 |
|
Windows Web 服務架構中的安全性作業失敗。 |
|
記憶體不足。 |
|
一或多個引數無效。 |
|
此函式可能會傳回上面未列出的其他錯誤。 |
備註
在訊息本文中傳送的 WS_FAULT ,會使用 WsCreateFaultFromError所定義的相同規則來建構。
用於回復訊息 的WS_ACTION_HEADER 值會計算如下:
- 如果通道的WS_CHANNEL_PROPERTY_ADDRESSING_VERSION WS_ADDRESSING_VERSION_TRANSPORT,則訊息中不會包含任何動作,因為定址版本不允許錯誤的動作值。
- 如果 error 物件包含動作字串, (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 |
程式庫 | WebServices.lib |
Dll | WebServices.dll |