添加引用方式抛出和捕获干净的WebService异常
轉(zhuǎn)載:http://www.cnblogs.com/ahdung/p/3953431.html
說明:【干凈】指的是客戶端在捕獲WebService(下稱WS)拋出的異常時,得到的ex.Message就是WS方法中拋出的異常消息,不含任何“雜質(zhì)”。
前提:你對WS有編寫權(quán)。就是說如果你調(diào)的是別人寫的WS,那么也許只能通過字符串處理的方式才能得到干凈的ex.Message。
?
先看示例:
- WS方法:
/// <summary>
/// 測試WS拋異常
/// </summary> /// <param name="isSoapEx">為true就拋出SoapException,否則拋出Exception</param> /// <param name="errMsg">自定義異常消息</param> [WebMethod] public string Test(bool isSoapEx, string errMsg) { throw isSoapEx ? new SoapException(errMsg, SoapException.ServerFaultCode) : new Exception(errMsg); } - 客戶端調(diào)用:
?
可以看到,如果WS拋出的是Exception,客戶端得到的ex.Message就是含有“雜質(zhì)”的,所以得到干凈異常消息的要訣之一就是:
WS要拋出SoapException異常。
這就是為什么說你要有對WS的編寫權(quán),因為別人的WS如果拋的不是SoapException,你就會得到先天含有雜質(zhì)的ex.Message,需要經(jīng)過一定加工才行。
剛剛說的是要訣之一,那就是說即便WS拋的是SoapException,也有可能得到不干凈的ex.Message,如圖:
這是由ASP.NET程序的【自定義錯誤消息】設(shè)定為“Off”引起的,把WS的web.config中的configuration\system.web\customErrors節(jié)點的mode屬性設(shè)為“On”或“RemoteOnly”即可。如圖:
?
所以,總結(jié)一下,以我目前所知,要想在客戶端得到干凈的ex.Message,要訣有二:
1、WS要把異常封裝為SoapException再拋出
2、WS的【自定義錯誤消息】不能設(shè)為Off
轉(zhuǎn)載于:https://www.cnblogs.com/51net/p/4431757.html
總結(jié)
以上是生活随笔為你收集整理的添加引用方式抛出和捕获干净的WebService异常的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有没有救
- 下一篇: “绊惹春风莫放归”上一句是什么