65.9K
CodeProject 正在变化。 阅读更多。
Home

WCF 中的故障契约

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2013 年 10 月 11 日

CPOL

1分钟阅读

viewsIcon

9022

WCF 提供了一种指定服务错误行为的机制。它提供了 FaultException 类。每当我们的服务实现

WCF 提供了一种指定服务错误行为的机制。它提供了 FaultException 类。每当我们的服务实现抛出错误异常时,WCF 会负责将其序列化回消费者,作为 SOAP 错误。WCF 会处理我们的服务可能发出错误的情况以及将哪些类型的信息与错误一起发送。

 

[ServiceContract]

public interface IMyFirstService  {

[OperationContract]

[FaultContract( typeof(MyAppFault)) ]

void MyMethod();

]


WCF FaultException 类有两种形式:-

1.FaultException:用于将未类型化的数据发送回消费者。

2.FaultException<TDetail>:用于将类型化的错误数据发送回消费者。这里 TDetail 代表类型参数,用于将详细的错误信息序列化回消费者,作为 SOAP 错误消息的一部分。客户端捕获异常时,可以通过从异常对象的 Detail 属性获取来访问详细的错误信息。


FaultContractAttribute 属性定义在 System.ServiceModel 中。它使服务开发人员能够声明给定服务可能发出的错误。这些属性只能应用于操作。可以多次应用它,如果我们的服务操作可能返回不同类型的错误,我们将为每种类型提供一个 FaultContractAttribute 声明。

它使用 Type 对象,用于引用 Details 对象的 .NET 类型。这是我们想要与错误一起捆绑的错误信息类型。


一个简单的例子

[ServiceContract()]

public interface ICalcService

{

    [OperationContract]

[FaultContract( typeof(string))]

double Divide(double numerator, double denominator)

        }

public class CalcService :  ICalcService 

{

public double Divide(double numerator, double denominator)

{

if(denominator ==0.0d)

{

string faultDetail= ”你不能除以零”;

throw new FaultException<string>(faultDetail);

}

return numerator/denominator;

}

}

 

© . All rights reserved.