精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

WCF異常處理特點體現(xiàn)

開發(fā) 開發(fā)工具
WCF異常處理是一個有異于傳統(tǒng)的處理方式。那么它的特殊之處到底在哪里呢?再這里我們將會為大家詳細介紹相關(guān)知識。

WCF的出現(xiàn),為開發(fā)人員帶來了不一樣的體驗。在很多方面都有所改變,為編程者提供了一個非常好的開發(fā)環(huán)境。比如今天為大家介紹的WCF異常處理,就有許多特殊之處,值得我們?nèi)ド钊氲难芯俊?/p>

異常消息與特定技術(shù)有關(guān),.NET異常同樣如此,因而WCF并不支持傳統(tǒng)的異常處理方式。如果在WCF服務(wù)中采用傳統(tǒng)的方式處理異常,由于異常消息不能被序列化,因而客戶端無法收到服務(wù)拋出的異常,例如這樣的服務(wù)設(shè)計:

  1. [ServiceContract(SessionModeSessionMode = SessionMode.Allowed)]  
  2. public interface IDocumentsExplorerService  
  3. {  
  4. [OperationContract]   
  5. DocumentList FetchDocuments(string homeDir);  
  6. }  
  7. [ServiceBehavior(InstanceContextModeInstanceContextMode
    =InstanceContextMode.Single)]  
  8. public class DocumentsExplorerService : 
    IDocumentsExplorerService,IDisposable  
  9. {  
  10. public DocumentList FetchDocuments(string homeDir)  
  11. {  
  12. //Some Codes  
  13. if (Directory.Exists(homeDir))  
  14. {  
  15. //Fetch documents according to homedir  
  16. }  
  17. else  
  18. {  
  19. throw new DirectoryNotFoundException(  
  20. string.Format("Directory {0} is not found.",homeDir));  
  21. }  
  22. }  
  23. public void Dispose()  
  24. {   
  25. Console.WriteLine("The service had been disposed.");  
  26. }  

 

則客戶端在調(diào)用如上的服務(wù)操作時,如果采用如下的捕獲方式是無法獲取該異常的:

  1. catch (DirectoryNotFoundException ex)  
  2. {  
  3. //handle the exception;  

 

為了彌補這一缺陷,WCF異常處理會將無法識別的異常均當(dāng)作為FaultException異常對象,因此,客戶端可以捕獲FaultException或者Exception異常:

  1. catch (FaultException ex)  
  2. {  
  3. //handle the exception;  
  4. }  
  5. catch (Exception ex)  
  6. {  
  7. //handle the exception;  

然而,這樣捕獲的異常,卻無法識別DirectoryNotFoundException所傳遞的錯誤信息。尤為嚴重的是這樣的異常處理方式還會導(dǎo)致傳遞消息的通道出現(xiàn)錯誤,當(dāng)客戶端繼續(xù)調(diào)用該服務(wù)代理對象的服務(wù)操作時,會獲得一個CommunicationObjectFaultedException異常,無法繼續(xù)使用服務(wù)。如果服務(wù)被設(shè)置為PerSession模式或者Single模式,異常還會導(dǎo)致服務(wù)對象被釋放,終止服務(wù)。

WCF異常處理專門提供了FaultContract特性,它可以被應(yīng)用到服務(wù)操作上,指明操作可能會拋出的異常類型。例如前面的服務(wù)契約就可以修改為:

  1. [ServiceContract(SessionModeSessionMode = SessionMode.Allowed)]  
  2. public interface IDocumentsExplorerService  
  3. {  
  4. [OperationContract]  
  5. [FaultContract(typeof(DirectoryNotFoundException))]  
  6. DocumentList FetchDocuments(string homeDir);  

 

然而,即使通過FaultContract指定了操作要拋出的異常,然而如果服務(wù)拋出的異常并非FaultException或者FaultException<T>異常,同樣會導(dǎo)致通道發(fā)生錯誤。因此在服務(wù)實現(xiàn)中,正確的實現(xiàn)應(yīng)該如下:

  1. public class DocumentsExplorerService : 
    IDocumentsExplorerService,IDisposable  
  2. {  
  3. public DocumentList FetchDocuments(string homeDir)  
  4. {  
  5. //Some Codes  
  6. if (Directory.Exists(homeDir))  
  7. {  
  8. //Fetch documents according to homedir  
  9. }  
  10. else  
  11. {  
  12. DirectoryNotFoundException exception = 
    new DirectoryNotFoundException();  
  13. throw new FaultException<DirectoryNotFoundException>
    (exception,   
  14. new FaultReason(string.Format("Directory {0} 
    is not found.", homeDir)));  
  15. }  
  16. }  

 

我們可以將服務(wù)所要拋出的異常類型作為FaultException<T>的類型參數(shù),然后創(chuàng)建一個FaultReason對象用以傳遞錯誤消息??蛻舳嗽谡{(diào)用服務(wù)代理對象時,可以捕獲FaultException< DirectoryNotFoundException>異常,并且該異常不會使得通道發(fā)生錯誤,并且客戶端可以繼續(xù)使用該服務(wù)代理對象。即使服務(wù)為PerCall服務(wù),客戶端仍然可以繼續(xù)調(diào)用服務(wù)操作。如果服務(wù)為Session服務(wù)或Singleton服務(wù),那么即使發(fā)生了異常,服務(wù)對象也不會被終結(jié)。#t#

如果只是為了讓客戶端獲得異常消息,即使不施加FaultContract特性,或者拋出非FaultException異常,我們也可以通過ServiceBehavior特性,將服務(wù)的IncludeExceptionDetailInFaults設(shè)置為true(默認為false),此時,客戶端可以捕獲拋出的非FaultException異常信息,但該異常仍然會導(dǎo)致通道出現(xiàn)錯誤。

但是,在發(fā)布服務(wù)與部署服務(wù)時,我們應(yīng)避免將服務(wù)的IncludeExceptionDetailInFaults設(shè)置為true。

如果不希望使用FaultContract,同時又要保證服務(wù)拋出的WCF異常處理能夠被客戶端捕獲,并且不會導(dǎo)致通道錯誤,我們還可以通過錯誤處理擴展的方式實現(xiàn)。此時,我們可以將服務(wù)本身作為錯誤處理對象,令其實現(xiàn)System.ServiceModel.Dispatcher.IErrorHandler接口:

  1. public class DocumentsExplorerService : 
    IDocumentsExplorerService,IErrorHandler, IDisposable  
  2. {…} 

 

在該接口的ProvideFault()方法中,可以將非FaultContract異常提升為FaultContract<T>異常,例如將DirectoryNotFoundException異常提升為FaultExceptino<DirectoryNotFoundException>異常:

  1. public void ProvideFault(Exception error,
     MessageVersion version, ref Message fault)  
  2. {  
  3. if (error is DirectoryNotFoundException)  
  4. {  
  5. FaultException<DirectoryNotFoundException> faultException =
     
    new FaultException<DirectoryNotFoundException>(  
  6. new DirectoryNotFoundException(), new FaultReason(error.Message));  
  7. MessageFault messageFault = faultException.CreateMessageFault();  
  8. fault = Message.CreateMessage(version,messageFault,
    faultException.Action);  
  9. }  

 

而在該接口的HandleError()方法中,則可以進行WCF異常處理,例如記錄日志。

要使得錯誤處理擴展生效,還需要向服務(wù)通道安裝錯誤處理擴展。方法是讓服務(wù)類實現(xiàn)System.ServiceModel.Description.IServiceBehavior接口:

  1. public class DocumentsExplorerService : 
    IDocumentsExplorerService,IErrorHandler,IServiceBehavior,IDisposable  
  2. {…} 

 

然后在ApplyDispatchBehavior()方法中安裝錯誤處理擴展:

  1. public void ApplyDispatchBehavior(ServiceDescription 
    serviceDescription, ServiceHostBase serviceHostBase)  
  2. {  
  3. foreach (ChannelDispatcher dispatcher in serviceHostBase.
    ChannelDispatchers)  
  4. {  
  5. dispatcher.ErrorHandlers.Add(this);  
  6. }  

 

通過這樣的處理,即使服務(wù)拋出的異常為DirectoryNotFoundException異常,并且在服務(wù)契約中沒有通過FaultContract特性指定該異常,客戶端同樣能夠獲得WCF異常處理的錯誤信息,且該異常不會導(dǎo)致通道發(fā)生錯誤,客戶端可以繼續(xù)調(diào)用服務(wù)代理對象的操作。

責(zé)任編輯:曹凱 來源: 博客園
相關(guān)推薦

2010-02-23 16:15:24

WCF Endpoin

2009-11-05 12:45:25

WCF異常

2009-12-22 16:55:26

WCF性能優(yōu)勢

2010-02-24 12:41:58

WCF異常處理

2009-12-17 10:29:04

Ruby異常處理結(jié)構(gòu)

2010-02-23 10:57:34

WCF Streami

2009-11-06 15:25:25

WCF異常

2010-02-23 09:51:32

WCF MTOM

2010-02-25 14:26:48

WCF特點

2010-02-23 09:34:15

WCF重載

2009-12-22 16:03:03

WCF異常

2010-02-24 14:20:27

WCF并發(fā)模型

2010-02-22 17:13:40

WCF會話狀態(tài)

2009-12-21 17:40:25

WCF會話

2010-02-25 17:22:39

WCF服務(wù)行為

2009-12-07 18:38:16

WCF異常

2009-11-09 10:10:13

WCF異常

2010-02-23 10:25:29

2009-12-21 11:10:53

WCF工具

2010-02-23 15:58:57

WCF Session
點贊
收藏

51CTO技術(shù)棧公眾號

国产视频精品网| 欧美大尺度在线观看| 国产精品99久久免费黑人人妻| 日韩有码电影| 久久精品av麻豆的观看方式| 久国内精品在线| 精品人妻少妇嫩草av无码| 日韩欧美2区| 亚洲激情男女视频| 蜜桃视频日韩| 国产jzjzjz丝袜老师水多| 一区二区毛片| 久久激情视频免费观看| 2一3sex性hd| 亚洲日本中文| 色悠悠久久综合| 日本精品福利视频| 欧美女优在线观看| 国产精品66部| 国产精品久久视频| 日韩成人免费观看| 99久久九九| 亚洲欧美日韩成人| 国产成人精品综合久久久久99| 桃花岛成人影院| 一区二区免费视频| 亚洲美女网站18| 深夜福利视频在线观看| 国产精品456露脸| 国产精品视频久久久| 精品欧美一区二区三区免费观看| 在线中文一区| 永久免费毛片在线播放不卡| 亚洲一区二区三区无码久久| 日本精品国产| 欧美日韩一卡二卡| 欧美精品第三页| caoporn视频在线观看| 亚洲色图另类专区| 亚洲精美视频| av网页在线| 99久久免费视频.com| 亚洲一区精品电影| 亚洲中文一区二区三区| 老司机精品视频网站| 97人人做人人爱| 精品少妇一二三区| 欧美日韩亚洲三区| 九九热视频这里只有精品| av资源在线免费观看| 国产成人精品三级高清久久91| 亚洲精品国产综合区久久久久久久| 亚洲av无一区二区三区久久| 麻豆精品久久| 日韩一区二区中文字幕| 色呦色呦色精品| 欧美aaa级| 欧美精品久久99| av在线免费看片| 成人97精品毛片免费看| 欧美精品乱人伦久久久久久| 污污网站在线观看视频| 日本久久一区| 欧美一区二区三区思思人| 手机在线视频一区| 另类视频一区二区三区| 精品久久久久久久久久久久久久久久久| 欧美一区二区三区影院| 综合视频一区| 亚洲精品一区二区三区香蕉| 精品国产av色一区二区深夜久久| 欧美综合精品| 亚洲欧美中文另类| 久久日免费视频| 国产精品久久久久久久| 欧美大片免费观看在线观看网站推荐 | 亚洲一区二区不卡视频| 欧美激情办公室videoshd| 日韩美女久久久| 日本一级黄视频| 久草免费在线视频| 欧美在线观看视频在线| www.成年人| 国产精品主播在线观看| 精品视频中文字幕| 麻豆视频免费在线播放| 欧美精品大片| 欧美做受高潮电影o| 在线观看免费视频a| 国产成人综合亚洲91猫咪| 韩国成人av| av在线首页| 亚洲日本在线视频观看| 国产原创中文在线观看| 美女写真久久影院| 欧美一卡2卡三卡4卡5免费| 国产xxxx视频| 欧美日韩中文字幕一区二区三区| 美女性感视频久久久| 国产精品成人久久| 日本麻豆一区二区三区视频| 亚洲综合小说区| 欧洲毛片在线| 亚洲免费电影在线| 欧美v在线观看| 在线不卡一区| 亚洲欧美综合区自拍另类| xxxxx99| 影音先锋中文字幕一区| 国产狼人综合免费视频| 亚洲精品一区二区口爆| 日本一区二区在线不卡| 日本三级中文字幕在线观看| 一区二区视频免费完整版观看| 日韩三级在线免费观看| 色婷婷在线影院| 狠狠入ady亚洲精品经典电影| 国产成人精品av在线| 亚洲av无码乱码国产精品久久| 久久九九全国免费| 999一区二区三区| 国产成人a视频高清在线观看| 精品久久国产97色综合| 成人黄色短视频| 香蕉久久久久久久av网站| 91文字幕巨乱亚洲香蕉| 在线免费av电影| 日韩欧美国产激情| 韩国av中国字幕| 999精品一区| 国产成人精品视频在线| 日韩中文字幕综合| 一区二区三区四区不卡在线| a在线观看免费视频| 天海翼亚洲一区二区三区| 欧美精品一区在线播放| 91丨porny丨在线中文 | 美女高潮在线观看| 欧美一级日韩不卡播放免费| 国产无遮挡在线观看| 午夜在线精品偷拍| 久久av一区二区三区亚洲| 羞羞视频在线观看免费| 911精品国产一区二区在线| 精品无人区无码乱码毛片国产| 影音先锋久久久| 岛国视频一区免费观看| 中文国产字幕在线观看| 欧美日韩电影一区| 四虎影视一区二区| 美腿丝袜亚洲三区| 一本久久a久久精品vr综合| 欧美在线va视频| 亚洲天堂av在线免费| 国产成人在线播放视频| 99久久精品国产麻豆演员表| 久久久久久免费看| 欧亚精品一区| 欧美在线视频免费| 欧美伦理影视网| 日韩欧美亚洲成人| 91精品人妻一区二区三区| 久久xxxx| 亚洲图片在线观看| 日本久久一区| 欧美日韩国产成人| 日韩一区二区三区在线观看视频| 五月天婷婷综合| 少妇按摩一区二区三区| 日韩激情视频在线观看| 夜夜爽99久久国产综合精品女不卡 | 欧美日韩国产高清一区二区三区| 国产精品一区二区亚洲| 久久99精品一区二区三区三区| 国产树林野战在线播放| 香蕉大人久久国产成人av| 久久久免费精品| 婷婷国产在线| 欧美在线免费视屏| 国产极品国产极品| 成人激情小说乱人伦| 国产在线精品91| 成人嘿咻视频免费看| 亚洲va欧美va在线观看| 欧美少妇网站| 日韩在线资源网| 成人av一区二区三区在线观看| 五月天视频一区| 国产又粗又猛又爽又黄的视频四季| 国产麻豆精品theporn| 800av在线免费观看| 日韩精品欧美大片| 国产精品永久免费| 黄网站在线观| 日韩在线中文字| 人人妻人人玩人人澡人人爽| 欧美影院一区二区| 欧美另类视频在线观看| 久久久久99精品一区| 爱情岛论坛亚洲自拍| 久久国产精品99国产| 国产在线拍揄自揄拍无码| 蜜桃一区av| 国产一区二区视频在线观看| 91超碰在线| 精品国产一区二区三区久久狼5月 精品国产一区二区三区久久久狼 精品国产一区二区三区久久久 | 亚洲美女免费在线| 欧美性xxxx图片| 国内成人自拍视频| 日本三级免费观看| 国内精品美女在线观看| 先锋影音一区二区三区| 成人自拍在线| 成人黄色在线免费| 伊伊综合在线| 欧美国产日韩二区| 麻豆网在线观看| 亚洲人成77777在线观看网| 国产成人a人亚洲精品无码| 在线免费av一区| 国产精品30p| 最新不卡av在线| 亚洲一区二区自偷自拍| 不卡一区二区在线| 97免费公开视频| 九九在线精品视频| 国产性生交xxxxx免费| 日韩亚洲国产精品| 日本a级片在线播放| 国产精品97| 婷婷精品国产一区二区三区日韩| 另类图片第一页| 国产激情美女久久久久久吹潮| 成人51免费| 成人久久18免费网站图片| 欧美123区| 国产成人精品av在线| 在线精品亚洲欧美日韩国产| 久久久中精品2020中文| 视频在线这里都是精品| 久久综合伊人77777蜜臀| 91精品国产91久久久久游泳池| 亚洲天堂男人天堂女人天堂| 亚洲av成人无码久久精品老人 | 国产youjizz在线| 日韩成人久久久| 色网站免费观看| 精品国产3级a| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的| 精品电影一区二区三区| 亚洲免费国产视频| 精品欧美一区二区在线观看| 国产高清免费av| 日韩午夜av电影| 精品人妻一区二区三区换脸明星 | 欧美性xxxxx| 久久久久久久久久久影院 | 国产伦精品一区二区三区视频痴汉| 欧美三级电影在线看| 一区二区视频在线免费观看| 欧美日韩激情一区| 96日本xxxxxⅹxxx17| 91精品麻豆日日躁夜夜躁| 国产精品一二三四五区| 欧美一区二区啪啪| 亚洲爆乳无码一区二区三区| 欧美精品一区二区蜜臀亚洲| 手机看片一区二区| 亚洲女在线观看| 91在线观看| 精品久久久999| 国产美女福利在线观看| 午夜免费久久久久| 国产免费不卡| 国产精品一区二区电影| 日韩精品一区二区三区免费视频| 国产福利一区二区三区在线观看| 色88888久久久久久影院| 欧美在线3区| 欧美成人milf| 中国丰满熟妇xxxx性| 国产亚洲精品v| 手机看片一级片| 国产凹凸在线观看一区二区| 国产精品无码专区| 中文字幕一区二区三| 久草视频免费在线播放| 日韩欧美在线免费观看| 亚洲在线视频播放| 亚洲第一精品夜夜躁人人躁| 国内精品一区视频| 久热精品视频在线观看一区| sm在线播放| 国产精品亚洲欧美导航| 国产精品白浆| 亚洲精品国产精品国自产观看| 亚洲一区二区三区无吗| 欧美亚洲另类色图| 狠狠色伊人亚洲综合成人| 久久精品女同亚洲女同13| 亚洲国产精品黑人久久久| 麻豆一区二区三区精品视频| 欧美专区亚洲专区| 色婷婷在线视频| 久久天天躁狠狠躁夜夜躁2014| 最新欧美色图| 成人在线观看av| 91日韩视频| 欧美日韩一区二区在线免费观看| 国产激情精品久久久第一区二区| 国产伦理片在线观看| 亚洲国产精品久久人人爱蜜臀| 涩涩视频在线观看| 亚洲韩国日本中文字幕| 成人午夜在线影视| 日韩美女在线看| 国产精品久久久久久久久久白浆| 亚洲日本理论电影| 久久激情网站| 国产精品成人无码专区| 亚洲天堂免费在线观看视频| 波多野结衣激情视频| 欧美精品一区二区三区蜜臀| 黄色精品在线观看| 国产精品久久久| 亚洲人成伊人成综合图片| 久久精品无码中文字幕| 国内精品自线一区二区三区视频| 蜜桃传媒一区二区亚洲| 欧美日韩一区二区三区| 亚洲成人一二三区| 久久中文字幕国产| 亚洲午夜剧场| 在线亚洲美日韩| 久久国产欧美日韩精品| 2019男人天堂| 日本久久一区二区三区| 神马午夜一区二区| 欧美精品久久一区二区| 亚洲1区在线| 日本一级黄视频| 国产a视频精品免费观看| 青青草在线观看视频| 日韩一区二区电影在线| 直接在线观看的三级网址| 91最新国产视频| 中文一区一区三区免费在线观看| 中文字幕 日韩 欧美| 亚洲欧美在线另类| 97精品人妻一区二区三区| 中文字幕亚洲在线| 亚洲视频自拍| 男同互操gay射视频在线看| 国产高清在线精品| 欧美国产日韩在线观看成人| 日韩一二三区视频| 污污的网站在线免费观看| 99久久国产免费免费| 午夜精品影院| 美女搡bbb又爽又猛又黄www| 亚洲国产人成综合网站| 色婷婷av一区二区三| 日本一本a高清免费不卡| 国产成人黄色| 9l视频白拍9色9l视频| 亚洲欧美一区二区三区国产精品| 精品人妻伦一二三区久久| 欧美国产亚洲视频| 欧美黑人巨大videos精品| 久草资源站在线观看| 国产亚洲一二三区| 一区二区久久精品66国产精品 | 欧美大片在线观看一区| 黄色大片在线| 欧美二区三区在线| 久久精品99国产精品日本| 久久久精品视频免费观看| 日韩欧美国产三级电影视频| 中文字幕人成乱码在线观看| 日韩中文字幕一区| 国产乱码精品一区二区三区av| 国产亚洲精品码| 亚洲人成啪啪网站| 韩国一区二区三区视频| a在线视频观看| 国产精品麻豆视频| 性中国古装videossex| 日韩av电影中文字幕| 91精品啪在线观看国产18| 男女一区二区三区| 欧美无砖专区一中文字| 欧美人体视频xxxxx| 日本精品免费| 国产精品456| 国产成人自拍偷拍| 欧美大片在线看免费观看| 精品一级毛片| 日韩成人av影院| 欧美日韩一二三| 国产高清中文字幕在线|