2008-10-28 54 views
1

我們正在開發一個新的Web服務,並正在研究在soap響應中返回錯誤的「最佳實踐」。使用Soap Headers處理錯誤

我們正在研究創建一個錯誤響應對象,每個響應都將包含一個屬性。這似乎有點沉重,但是想知道是否可以使用SOAP頭來傳遞這些信息?您通常如何處理使用SOAP的自定義錯誤?

回答

1

SOAPFault用於保存錯誤和狀態信息,並且服務器在HTTP標頭中返回500,表示它是故障。

看到W3.org

http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383507

規格您可以通過將其放置到SOAP頭,甚至在你返回結果的元素中,只要設計自己的信息令牌作爲您清楚地記錄它爲第三方。但是,這不是提升錯誤的標準方法。

+0

這看起來就像我們之後的事情一樣。你會推薦使用響應中返回的自定義錯誤對象嗎? – Sheff 2008-10-28 11:14:58

2

肥皂已經爲錯誤信息使用了自定義標題,所有你需要做的就是在服務器端拋出一個異常,並且在客戶端拋出異常爲SoapException

你可以,如果你想在異常消息/信息更多的控制在服務器端拋出SoapExceptions。

編輯: 對於隨請求額外的信息,可以使用自定義的SOAP頭。這裏有一個example article on CodeProject,它使用自定義肥皂頭進行身份驗證,但自定義肥皂頭可用於其他目的,例如發送不一定是錯誤條件的額外信息(可以是業務邏輯信息)

+0

對不起,我不確定我的問題是否明確,我正在回答溝通業務規則錯誤。如果可以避免,拋出異常是不是不好的做法? – Sheff 2008-10-28 11:04:16

+0

您還可以將自定義SOAP標頭添加到響應中或請求額外的信息以及請求http://msdn.microsoft.com/zh-cn/library/system.web.services.protocols.soapheader.aspx – 2008-10-28 11:11:24

0

我以前在複雜的操作中使用過類似的技術。特別是當您需要(多個?)錯誤描述以及錯誤代碼時。

0

Soap標頭用於帶外信息,不應用於錯誤消息。此外,肥皂標題不應該用於肥皂響應,因爲:

  • 如果mustUnderstand缺失或0,客戶端可以安全地忽略它們。
  • 如果mustUnderstand是1,客戶端不能發出信號它不理解它(因爲它是一個響應)。

是的,我知道有一些WS- *標準描述了在響應SOAP頭......

所以,

使用SOAP錯誤對於那些足夠嚴重的錯誤,沒有響應對象。 向響應中添加一個狀態標記以顯示警告和信息消息。