2010-10-19 62 views
1

我有一個ASMX網絡服務,我有一些方法,在他們原來的實現是返回類型布爾。如何在Web方法中顯示錯誤信息?

將錯誤返回給客戶端的正確方法是什麼?目前他們只是返回false。有沒有辦法返回一個更復雜的類型,通知客戶端一個問題,例如爲所需參數傳遞的空值?

回答

2
  • 用肥皂做的方式是返回一個SOAP錯誤消息。
  • 不幸的是,ASMX Web服務不能正確支持SOAP Fault消息。

好消息是,您應該使用WCF進行Web服務客戶端和服務器的所有開發,並且WCF完全支持SOAP Faults。

請記住,無論你做什麼,你的客戶都需要知道你在做這件事。 ASMX支持故障的一個問題是,關於哪個操作發送哪個錯誤沒有發送到WSDL中的信息,因此客戶端不會知道您正在返回錯誤。

+0

謝謝,約翰。那麼我將在WCF中重新實現它。任何關於cn讓我快速運行的資源建議?我在這個網站上說過100次。我不是開發人員 - 我更多是生產DBA。 – 2010-10-19 19:27:05

+0

http://stackoverflow.com/tags/wcf/info – 2010-10-19 19:28:29

+0

@Robert:請問是什麼讓您開始使用ASMX的Web服務工作? – 2010-10-19 19:29:02

-1

如果您正在爲.NET客戶端處理.NET服務,則可以將該數據以異常形式傳遞,只需將其放入您的服務中調用的方法即可。如果你正在處理不同的技術,你仍然可以通過在WS方法中拋出一個異常來在一定程度上做到這一點,但是不要像在兩側使用WCF/.NET或Axis2/Java那樣獲得交織行爲例如。

+0

-1:對不起,這不適用於ASMX Web服務。 – 2010-10-19 19:18:54

+0

@John所以這不是準確的? http://msdn.microsoft.com/en-us/library/cc304761.aspx我的理解是,他想傳回原因,即...代碼...雖然他指出「複雜類型」的例子似乎並不不止是錯誤代碼/字符串 – 2010-10-19 19:30:39

+0

@Aaron:未處理的異常將生成SoapException,將作爲SOAP Fault發送給客戶端。在這個錯誤中沒有有用的信息,客戶也沒有理由相信你可以給他發送錯誤。事實上,這種服務的WCF客戶端在這種情況下會引發致命的異常。 – 2010-10-19 19:32:54

0

當然,你可以創建一個對象,如果它傳遞了或者不是一個包含bool的對象,並且是一個公開消息的字符串。 Web服務的使用者可以像訪問原始布爾一樣訪問該對象。

-1

我認爲你正在尋找SoapException Class

+0

-1:Oren,當他尋找SoapException類時他會做什麼? – 2010-10-19 19:22:14

+0

@John,扔它? – 2010-10-19 19:25:01

+0

然後呢?再次閱讀他的問題。 – 2010-10-19 19:26:01