WCF異常處理各種方式詳解
WCF作為一個開發(fā)插件,它在處理異常方面的體現(xiàn)了非常大的方便之處。在這里我們將會根據(jù)WCF異常處理的各種方式來為大家詳細(xì)介紹一下這方面的知識。希望朋友們可以從中獲得一些幫助。#t#
WCF異常處理之WCF異常與實例管理
當(dāng)服務(wù)實例出現(xiàn)異常時,WCF并不會關(guān)閉宿主進程,但錯誤可能會影響服務(wù)實例,同時還會影響到客戶端繼續(xù)使用代理(實際上是通道)訪問服務(wù)的能力。準(zhǔn)確的說,異常對于客戶端與服務(wù)實例的影響與實例模式有關(guān)。
WCF異常處理之單調(diào)服務(wù)與異常
如果調(diào)用引發(fā)異常,那么緊跟在異常之后,服務(wù)實例會被釋放,代理將在客戶端拋出FaultException異常。在默認(rèn)的情況下,所有服務(wù)拋出的異常(包括FaultException的派生類)會使通道發(fā)生錯誤。即使客戶端捕獲了異常,它也不能發(fā)出隨后的調(diào)用,因為它們會引發(fā)一個CommunicationObjectFaultedException異常。此時,客戶端只能關(guān)閉代理。
WCF異常處理之會話服務(wù)與異常
無論使用何種WCF會話綁定,在默認(rèn)情況下,所有異常(包括FaultException的派生類)都會終止會話。WCF將會釋放實例,而客戶端則獲得一個FaultException的異常。即使客戶端捕獲了異常,也不能繼續(xù)使用代理。客戶端***可以安全執(zhí)行的就是關(guān)閉代理,因為一旦參與會話的服務(wù)實例遇到了錯誤,會話就不能再使用了。
WCF異常處理之單例服務(wù)與異常
當(dāng)我們調(diào)用單例服務(wù)時,如果遇到異常,單例實例不會終止,而是繼續(xù)運行。在默認(rèn)情況下,所有異常(包括FaultException的派生類)都會導(dǎo)致通道發(fā)生錯誤,客戶端無法發(fā)出隨后的調(diào)用,只能關(guān)閉代理。如果客戶端包含了一個單例實例的會話,那么會話會終止。