客户端应用程序如何知道特定的wcf方法是否会抛出faultexception?

时间:2013-10-20 11:42:11

标签: wcf faultexception

我知道wcf方法会引发错误异常,而客户端应用程序会捕获该错误异常。但有没有办法知道wcf方法是否在客户端抛出错误异常?

1 个答案:

答案 0 :(得分:0)

创建WCF服务时,您可以使用[FaultContract]属性修饰您的操作合同:

[ServiceContract]
public interface IService1
{
    [OperationContract]
    [FaultContract(typeof(MyFaultContract))]
    void DoWork();
}

这会在服务的元数据(WSDL)中发出有关此MyFaultContract的信息。然后,当您创建客户端代理(使用VS中的“添加服务引用”或直接使用svcutil.exe)时,客户端就会知道此错误契约,您可以捕获此类型的异常。

因此,这里的想法是查看您的操作合同是否使用[FaultContract]属性进行修饰,以了解此操作可能引发的哪种类型的错误契约。如果它没有定义任何自定义FaultContract属性,则意味着在客户端上只能捕获FaultException的非泛型版本。