韩剧1988免费观看全集_久久影视三级福利片_亚洲视频在线观看免费_在线观看欧美日韩_国产亚洲激情在线_亚洲精品美女久久久_欧美国产日韩一区二区在线观看_91在线观看免费高清完整版在线观看_日韩av免费看_国产又爽又黄的激情精品视频_琪琪亚洲精品午夜在线_欧美性猛xxx_不卡毛片在线看_国产亚洲日本欧美韩国_91国内在线视频_精品国产福利视频

當前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細頁面

C#:Web Service異常處理

C#:Web Service異常處理

更新時間:2022-06-06 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

在.Net中實現(xiàn)Web服務(wù)時,在Web服務(wù)接口中產(chǎn)生的任何用戶異常(非SoapException之外的異常)都被包裝為SoapException傳遞給客戶端,這使得難以采用通常的方式處理Web Service的異常。本文講述如何通過SoapExceptionHelper實現(xiàn)一致的異常處理。

Web Service的異常處理問題
在.Net中實現(xiàn)Web服務(wù)時,Web服務(wù)接口中產(chǎn)生的任何用戶異常(非SoapException之外的異常)都被包裝為SoapException傳遞給客戶端 ,用戶錯誤信息放置在SoapException的Message屬性中。

下面的例子演示了一個SoapException封裝的用戶異常信息。WebMethod接口TestException代碼拋出一個InvalidOperationException:

[WebMethod]
public void TestException() {
throw new InvalidOperationException("Invalid Operation.");
}

WebMethod的客戶端將捕獲一個SoapException異常,Message消息如下:



其中Message消息包含一段“...-->[ 1 ]:[ 2 ] at ....”的信息,[1]為用戶異常類,[2]為用戶異常消息。而一個原始的SoapException(用new SoapException(...)的方式創(chuàng)建并拋出的異常)則沒有這些信息,下面是一個原始的SoapException消息:



遺憾的是,目前的SoapException并沒有提供更多直接的手段直接獲取原來的異常信息,唯一包含的用戶異常信息在Message字符串中,對于使用Web Service作為分布式機制的應(yīng)用系統(tǒng)來說是非常不方便的,調(diào)用者無法捕獲原來的異常,難以獲取用戶友好的異常信息。同時,因為Web Service接口代理不再拋出原來的異常,應(yīng)用的開發(fā)者需要考慮兩套完全不同的異常處理機制,帶來了程序結(jié)構(gòu)的復雜性。

創(chuàng)建SoapException輔助類:SoapExceptionHelper
SoapExceptionHelper輔助類包含下列主要接口:

IsUserException:是否是一個UserException
UserException:返回原始的UserException
Message:原始異常的錯誤消息。
獲得原始的用戶異常類和異常消息
通過正則表達式類我們可以獲得原始的用戶異常類和異常消息:

/// <summary>
/// 讀取UserException信息。
/// </summary>
private void ReadUserExceptionInfo() {
//match user exception class
System.Text.RegularExpressions.MatchCollection mc =
Regex.Matches(soapException.Message, "---> ([^:]+):");
if (mc.Count >= 1) {
userExceptionClass = mc[0].Groups[1].Value;
//match user exception message
mc = Regex.Matches(soapException.Message, "---> [^:]+:(.*)\n");
if (mc.Count > 0) UserExceptionMessage = mc[0].Groups[1].Value;
}
}

創(chuàng)建用戶異常實例
UserException接口利用反射機制創(chuàng)建一個原來的Exception類實例:

... ...
Assembly callingAssemply = Assembly.GetCallingAssembly();
Type exceptionType = GetExceptionType(callingAssemply); //獲得用戶異常類型定義
Exception e = null;
try {
try {
e = Activator.CreateInstance(exceptionType, new object[]{UserExceptionMessage}, null) as Exception;
}
catch {}
//if no exists constructor with message parameter, use no parameters constructor.
if (e == null) e = Activator.CreateInstance(exceptionType) as Exception;
}catch(Exception ex) {
throw new SoapExceptionHelperException(userExceptionClass, ex);
}

return e;

創(chuàng)建用戶異常的問題
因為用戶異?赡芏x在不同的集成塊中,SoapExceptionHelper可能無法知道它的位置,無法正確的獲取異常類型,如一個與SoapExceptionHelper所在集成塊和調(diào)用集成塊(CallingAssembly)不再同一個引用范圍內(nèi)的異常類。SoapExceptionHelper如果無法創(chuàng)建原始異常的實例,就創(chuàng)建一個System.Exception對象實例。

為了創(chuàng)建真正的原始異常類,調(diào)用者可以在外部獲得實際的異常類型,并傳遞給SoapExceptionHelper,因為調(diào)用者可以明確的引用異常定義 所在的集成塊。示例如下:

// 項目引用中引入異常定義所在的集成塊
...
SoapExceptionHelper helper = new SoapExceptionHelper(se);
Type type = Type.GetType(helper.UserExceptionClass, "<異常類所在的集成塊>");
Exception e = helper.GetUserException(type);

如果外部沒有傳遞異常類型定義,SoapExceptionHelper嘗試以以下順序獲取異常類型定義:

Executing Assembly
Calling Assembly
Referenced Assemblies (of Calling Assembly)
System.Exception
使用SoapExceptionHelper
返回用戶友好的消息
使用SoapExceptionHelper顯示示例1中的錯誤消息:

try {
... ... // call web method
} catch (SoapException se){
MessageBox.Show(new SoapExceptionHelper(se).Message) ; //show "Invalid Operation." string
}
 

屏蔽SoapException
Web Service客戶端代理類可以在捕獲SoapException后重新拋出原來的異常,使用這種機制,可以有效的屏蔽Web Service異常處理的差異,使應(yīng)用程序采用一致的本地方式處理異常。下面的代碼修改Visual Studio生成的Web Service Client Proxy Class(Reference.cs文件)實現(xiàn)了這種機制(加粗的部分為新增的代碼):

[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/TestException", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public void TestException() {
try{
this.Invoke("TestException", new object[0]);
}catch(SoapException se){
SoapExceptionHelper helper = new SoapExceptionHelper(se);
if (helper.IsUserException) throw helper.UserException; //rethrow user exception
else throw;
}
}

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
国产精品自在自线| 日本最黄一级片免费在线| 亚洲成人a**站| 亚洲天堂视频网| 国产精品系列在线观看| 性色视频在线观看| wwwwxxxx日韩| 亚洲成人a级网| 欧美极品少妇xxxxⅹ裸体艺术| 最新国产一区| 飘雪影视在线观看免费观看| 无码人妻丰满熟妇区五十路| 免费免费啪视频在线观播放| 国产精品久久久久久久第一福利| av资源一区二区| 一区二区免费在线观看视频| 国产三级做爰高清在线| 男女日批视频在线观看| 国产aⅴ夜夜欢一区二区三区| 136国产福利精品导航| 在线成人福利| 337p日本欧洲亚洲大胆鲁鲁| 亚洲精品日产精品乱码不卡| 亚洲国产精品综合| 欧美日韩精品一区视频| av大片在线免费观看| 国产精品亚洲人成在99www| 欧美激情 一区| 国产成人黄色片| 国产成人精品视频在线观看| 国产精品都在这里| 亚洲不卡一卡2卡三卡4卡5卡精品| 亚洲视频在线观看不卡| 日韩伦理在线免费观看| 在线播放国产视频| 久久久精品日韩欧美| 亚洲av无码国产精品麻豆天美| 91久久奴性调教| 夜夜摸视频网| 不卡免费追剧大全电视剧网站| 99在线视频精品| 国产欧美日韩精品在线观看| 触手亚洲一区二区三区| 无码精品a∨在线观看中文| 久久久久99精品成人片我成大片| 战狼4完整免费观看在线播放版| 试看120秒一区二区三区| 91国产高清在线| 天天爱天天做天天操| 欧美日韩精品免费观看视频| 欧洲三级视频| 69av成年福利视频| 1024在线看片| 日本一区二区三区www| 视频国产一区| 亚洲产国偷v产偷v自拍涩爱| 九九热久久免费视频| 日本成人小视频| 日韩成人久久| 欧美一级做性受免费大片免费| 亚洲黄色录像| 97精品人妻一区二区三区在线| 黄色av观看| 国产喷白浆一区二区三区| 97视频免费| 四虎成人免费| 国产极品一区二区三区| 99re这里都是精品| 日韩系列欧美系列| 免费成人深夜天涯网站| 轻轻操 在线观看| 欧美日韩色婷婷| 北条麻妃高清一区| 国产精品传媒在线| 亚洲影视一区二区三区| 色婷婷成人在线| 伊人久久大香线蕉| 亚洲人成毛片在线播放女女| 四虎影视最新网址| 午夜精品成人av| 国产精品视频a| 亚洲性线免费观看视频成熟| 亚洲人精品午夜射精日韩| www.亚洲天堂网| 国产免费观看高清视频| 黄色网在线看| 内射后入在线观看一区| 91精品中国老女人| 69国产精品| 精品成人一区二区三区四区| 中文av资源在线| av午夜在线观看| 青草视频在线观看视频| 欧美午夜久久久| xxxwww国产| 蜜臀av中文字幕| 91精品国产综合久久久久久豆腐| av成人老司机| 91高跟黑色丝袜呻吟在线观看| 美女又爽又黄| 91福利在线播放| 日韩亚洲国产免费| av免费在线网址| 午夜免费高清视频| 国产乱肥老妇国产一区二| 91最新网址| 91日韩视频在线观看| 波多野结衣一区二区三区| 国产欧美日韩精品丝袜高跟鞋| 日韩av一区二| 中日韩av电影| 在线看福利67194| 中文字幕二区三区| 日日噜噜噜噜夜夜爽亚洲精品| 一区二区三区在线资源| 91免费看片在线| 欧美一级免费播放| 四色最新网址| 国产精品欧美经典| 美女露胸视频在线观看| 免费人成在线不卡| 男插女视频久久久| 亚洲日本va午夜在线影院| 亚洲日本一区二区| 嫩草嫩草嫩草| 国产丝袜精品第一页| 国产精品www色诱视频| 99re6热在线精品视频播放速度| 日本韩国精品在线| 国产夫妻在线播放| 亚洲草久电影| 精品无码一区二区三区爱欲| 老师让我她我爽了好久视频| 91精品国产自产精品男人的天堂| 米仓穗香在线观看| 国产精品网址在线| 午夜a一级毛片亚洲欧洲| 日韩亚洲视频在线| 在线观看亚洲a| 日韩精品中文字幕在线| 黄色小视频在线免费看| 最近中文字幕mv在线一区二区三区四区| 久久久亚洲天堂| 91video| 在线天堂日本| 国产精品无码自拍| 亚洲av成人无码一二三在线观看| 免费在线播放av| 91看片官网| 国产精品第一页在线观看| 欧美成人精品三级在线观看| 在线成人私人影院| 精品国产免费人成网站| 老司机午夜精品视频在线观看| 欧美日韩中文不卡| 91视频最新地址| 综合久久久久综合| 免费观看精品视频| 大陆一级毛片免费观看| jizzjizzjizz欧美| 伊人成综合网站| 岛国av在线播放| 成人国产精品久久久网站| 免费看成年人视频| 中文字幕一区二区三区5566| 九色精品视频在线观看| 欧美激情五月| 亚洲免费av网址| 国产成人一区二区三区| 中文字幕中文字幕中文字幕亚洲无线| 亚洲一区二区三区乱码| 日本福利片在线| 天天爽夜夜爽一区二区三区| 中文字幕精品影院| 26uuu成人网一区二区三区| 亚洲欧美另类小说视频| 亚洲av无码一区二区二三区| 久久视频社区| 欧美阿v一级看视频| ...xxx性欧美| 亚洲精品久久久久久宅男| 一本加勒比hezyo黑人| 欧美激情极品| 成人国产亚洲精品a区天堂华泰| 日韩一二三在线视频播| 午夜dv内射一区二区| 日日欢夜夜爽一区| 亚洲一二三四区| 人操人爱免费视频| 老熟妇仑乱视频一区二区| 99精品在线直播| 国产欧美一区二区色老头| 亚洲午夜激情av| 亚洲黄页视频免费观看| 成人美女av在线直播| 中日韩美女免费视频网址在线观看| 亚洲精品视频久久| 久久精品福利视频| 苍井空张开腿实干12次| 日本少妇性高潮| 日韩在线不卡| 亚洲japanese制服美女| 成人黄色在线网站| 国产一区二区中文字幕免费看| 国产视频三区| 精品国产乱码| 夜夜嗨aⅴ免费视频| 成人av电影观看| 欧美激情 国产精品| 少妇精品一区二区| 空姐吹箫视频大全| 中文字幕日韩一区二区三区不卡| 久久久免费毛片| 九九大香尹人视频免费| 欧美一级手机免费观看片| 你懂的网站在线观看网址| 国产三级在线免费观看| 亚洲欧美aⅴ...| 国产精品每日更新在线播放网址| 亚洲高清视频免费观看| 日本亲与子乱a| 国产乱淫av片杨贵妃| 女生裸体免费视频| 中文字幕超碰在线| 欧美日韩在线中文| 久久综合av| 亚洲最大成人综合| 中文字幕高清在线观看| 日韩中文字幕在线免费| 久久男人av资源网站| 一级特黄aaa大片在线观看| 日本高清不卡aⅴ免费网站| 蜜臀精品一区二区三区在线观看| 91久久奴性调教| 在线播放亚洲精品| 国产一级伦理片| 五月婷婷欧美激情| 亚洲人妖av一区二区| 精品久久ai| 色综合桃花网| 97超碰免费在线| 欧美日韩一区二区国产| 可以在线看的黄色网址| 欧美一区二区三区爽爽爽| 国产成人免费高清视频| 黄色漫画在线免费看| 26uuu日韩精品一区二区| 在线免费黄色av| 欧美又大粗又爽又黄大片视频| 青青久精品观看视频最新| www.av一区视频| 99久久99久久精品国产片桃花| 一级黄色片在线观看| 亚洲欧洲国产日韩精品| 欧美亚视频在线中文字幕免费| 少妇高潮 亚洲精品| 国产一区二区三区综合| 99精品热视频只有精品10| 国产乱妇乱子在线播视频播放网站| 884aa四虎影成人精品一区| 午夜视频免费看| 国产精品嫩草影院8vv8| 天堂成人娱乐在线视频免费播放网站| 一边摸一边做爽的视频17国产| 91麻豆精品激情在线观看最新| 久久综合99re88久久爱| 国产欧美中文在线| 亚洲精品无码一区二区| 国产成人鲁色资源国产91色综| 国产午夜精品一区理论片飘花| 国产综合色产在线精品| 中文网丁香综合网| 国产日韩av网站| 国产日韩三级在线| 黄色片在线免费| 青春草在线观看| 97在线免费| 欧美亚洲成人xxx| 免费高清视频日韩| 阳光姐妹淘韩国版| 欧美伦理一区二区| 日韩欧美视频在线播放| 国产午夜福利视频在线观看| 在线视频观看国产| 国产免费又粗又猛又爽| 亚洲精品丝袜日韩| 国产一级片大全| 黄色网页免费看| 精品国产欧美一区二区五十路| 天堂网www在线网| 福利视频久久| 久久99精品久久久久久噜噜| 男人看的污网站| av线上观看| 日本欧美一区二区在线观看| 亚洲高清极品| 夜夜嗨网站十八久久| 亚洲欧美在线观看| 国产精品16p| 悠悠资源网久久精品| 日本乱理伦在线| 欧美一区二区三区不卡视频| 国产乱淫av一区二区三区| 亚洲熟妇无码乱子av电影| theporn国产在线精品| 亚洲av永久无码精品| 日日爱夜夜操| 国产精品盗摄一区二区三区| 人妻熟人中文字幕一区二区| 精品国产髙清在线看国产毛片| 午夜不卡av免费| 一级黄色av片| 人成福利视频在线观看| 五月婷婷丁香在线| 综合久久精品| 欧美黑人疯狂性受xxxxx喷水| 一级毛片在线观| 九九视频精品全部免费播放| 日韩亚洲一区在线| 亚洲欧洲一区二区三区在线观看| 国产性生活免费视频| 91久久久久久久久久久久| 亚洲精品成a人| 日韩漫画puputoon| 日韩理论电影院| 色综合久久久无码中文字幕波多| 国产亚洲制服色| 亚洲乱码国产乱码精品精98午夜|