WCF无法捕获FaultException

有一个服务错误契约是这样的BusinessFault

1
throw  new  FaultException( new  BusinessFault(), errMessage);

这样抛出后,客户端一直收到的是CommunicationException而不是上面的具体的Exception.最后使用如下代码通过

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
BusinessFault businessFault = new  BusinessFault
   {
       FaultDetail = new  FaultDetail
                         {
                             ErrorCode = "BusinessError" ,
                             Message =
                                 string .IsNullOrEmpty(errMessage)
                                     ? errMessage
                                     : "No Message"
                         },InvalidArgumentDetail = new  InvalidArgumentDetail()
                          
   };
 
 
throw  new  FaultException(businessFault,errMessage);

为什么呢?经过仔细排查,发现Schema定义的一些元素是不能为空的,比如Error和Message,但是开发人员在写的时候和编译的时候都发现不了。我觉得这个如果生成代理类时用构造函数来强制就好了。

WCF无法捕获FaultException_第1张图片
本文转自敏捷的水博客园博客,原文链接http://www.cnblogs.com/cnblogsfans/archive/2011/02/14/1954351.html如需转载请自行联系原作者

王德水

你可能感兴趣的:(WCF无法捕获FaultException)