我知道wcf方法会引发错误异常,而客户端应用程序会捕获该错误异常。但有没有办法知道wcf方法是否在客户端抛出错误异常?
答案 0 :(得分:0)
创建WCF服务时,您可以使用[FaultContract]
属性修饰您的操作合同:
[ServiceContract]
public interface IService1
{
[OperationContract]
[FaultContract(typeof(MyFaultContract))]
void DoWork();
}
这会在服务的元数据(WSDL)中发出有关此MyFaultContract
的信息。然后,当您创建客户端代理(使用VS中的“添加服务引用”或直接使用svcutil.exe
)时,客户端就会知道此错误契约,您可以捕获此类型的异常。
因此,这里的想法是查看您的操作合同是否使用[FaultContract]
属性进行修饰,以了解此操作可能引发的哪种类型的错误契约。如果它没有定义任何自定义FaultContract属性,则意味着在客户端上只能捕获FaultException的非泛型版本。