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