Wcf异常处理

pdi*_*ddy 5 .net c# wcf

我注意到,例如,如果您执行抛出新的InvalidCastException,则客户端上的通道状态出现故障.但是如果抛出新的FaultException,则会打开客户端的通道状态.

由于好奇心,人们为什么会对通道进行故障而对另一方没有故障的原因是什么?

cas*_*One 12

FaultException异常是WCF的一个特例.这意味着表明服务端发生的某些事情是错误的,但与此同时,并不是通道的错误.这是有道理的,因为您可以使用FaultContractAttribute将此信息嵌入到合同中,以揭示合同中可能出现的情况.

其他例外在WS世界中并不是真正可以翻译的.例外是一种特定于技术的抽象,每个技术堆栈都有不同的抽象表示(或者在某些情况下,根本没有抽象).

话虽这么说,当一个例外是不是一个错误异常被抛出在服务器端,可以看出通过WCF运行时那样的灾难,通道必须受到指责,因为它不知道你是否能继续或取消.

但是,使用FaultException,它意味着您对抛出它的原因以及底层通道是否受到影响有一些先见之明.