45fan.com - 路饭网

搜索: 您的位置主页 > 电脑频道 > 电脑教程 > 阅读资讯:处理WCF异常问题的方法

处理WCF异常问题的方法

2016-08-31 20:22:58 来源:www.45fan.com 【

处理WCF异常问题的方法

WCF中,如果没有指定,服务端的异常不会传递到客户端,如:在等于0时,客户端根本不知道异常的原因据,也即"Divsion by zero!"异常信息不会传到客户端。

处理WCF异常问题的方法[ServiceContract]
处理WCF异常问题的方法
publicclassCalculatorService
处理WCF异常问题的方法处理WCF异常问题的方法
{
处理WCF异常问题的方法[OperationContract]
处理WCF异常问题的方法
intDivide(inta,intb)
处理WCF异常问题的方法处理WCF异常问题的方法
{
处理WCF异常问题的方法
if(b==0)thrownewException(“Divisionbyzero!”);
处理WCF异常问题的方法
returna/b;
处理WCF异常问题的方法}

处理WCF异常问题的方法}

处理WCF异常问题的方法

在最简单的情况下,我们可以使用空FaultException(它只包含一个string字符串,称为错误原因), 如下所示:

处理WCF异常问题的方法[ServiceContract]
处理WCF异常问题的方法
publicclassCalculatorService
处理WCF异常问题的方法处理WCF异常问题的方法
{
处理WCF异常问题的方法[OperationContract]
处理WCF异常问题的方法
intDivide(inta,intb)
处理WCF异常问题的方法处理WCF异常问题的方法
{
处理WCF异常问题的方法
if(b==0)thrownewFaultException(“Divisionbyzero!”);
处理WCF异常问题的方法
returna/b;
处理WCF异常问题的方法}

处理WCF异常问题的方法}

处理WCF异常问题的方法

当然,我们可以定义强类型的异常信息,并在方法上运用FaultContractAttribute来指定它,如下所示:

处理WCF异常问题的方法[DataContract]
处理WCF异常问题的方法
publicclassMathFault
处理WCF异常问题的方法处理WCF异常问题的方法
{
处理WCF异常问题的方法[DataMember]
处理WCF异常问题的方法
publicstringoperation;
处理WCF异常问题的方法
处理WCF异常问题的方法[DataMember]
处理WCF异常问题的方法
publicstringdescription;
处理WCF异常问题的方法}

处理WCF异常问题的方法
处理WCF异常问题的方法[ServiceContract]
处理WCF异常问题的方法
publicclassCalculatorService
处理WCF异常问题的方法处理WCF异常问题的方法
{
处理WCF异常问题的方法[FaultContract(
typeof(MathFault))]
处理WCF异常问题的方法[OperationContract]
处理WCF异常问题的方法
intDivide(inta,intb)
处理WCF异常问题的方法处理WCF异常问题的方法
{
处理WCF异常问题的方法
if(b==0)
处理WCF异常问题的方法处理WCF异常问题的方法
{
处理WCF异常问题的方法MathFaultm
=newMathFault();
处理WCF异常问题的方法m.operation
=/”;
处理WCF异常问题的方法m.description
=”Divisionbyzero!”;
处理WCF异常问题的方法
thrownewFaultException<MathFault>(m);
处理WCF异常问题的方法}

处理WCF异常问题的方法returna/b;
处理WCF异常问题的方法}

处理WCF异常问题的方法}

处理WCF异常问题的方法

注意:不能用XmlSerializer来序列化Fault相关的对象实例,即使在其上使用了XmlSerializerFormatAttribute属性。

为了调试目的,可以用ReturnUnknownExceptionsAsFaults配置项(配置文件)或是在服务上使用ServiceBehaviorAttribute属性来将所有异常作为Fault返回给客户端, 如下所示:

处理WCF异常问题的方法[ServiceContract]
处理WCF异常问题的方法[ServiceBehavior(ReturnUnknownExceptionsAsFaults
=true)]
处理WCF异常问题的方法
publicclassCalculatorService
处理WCF异常问题的方法处理WCF异常问题的方法
{
处理WCF异常问题的方法[OperationContract]
intDivide(inta,intb)
处理WCF异常问题的方法处理WCF异常问题的方法
{
处理WCF异常问题的方法
returna/b;//ThismaythrowtheDivideByZeroException.
处理WCF异常问题的方法}

处理WCF异常问题的方法}

处理WCF异常问题的方法
但是这种方式绝不应该在产品布署中使用,因为它是.Net平台专用的,在WSDL中不会有异常信息的描述,这会导致服务端与客户端的紧耦合, 而且这种方式会暴露内部实现机制。
 

本文地址:http://www.45fan.com/dnjc/70445.html
Tags: 处理 异常 WCF
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部