小编ca_*_*cat的帖子

c#WCF捕获Base类型的故障异常

我一直在寻找如何在c#中找到基本故障合同类型.我希望我的所有错误契约都从一个类继承,并在MVC控制器中有一个catch(FaultException fex).

DataContracts

[DataContract]
public class BaseClass1 
{ }

[DataContract]
public class Class2 : BaseClass1 
{ }
Run Code Online (Sandbox Code Playgroud)

服务

[ServiceContract]
public interface IService1
{
    [OperationContract]
    [FaultContract(typeof(BaseClass1))]
    [FaultContract(typeof(Class2))]  //Do I need this one?
    void ThrowClass2();
}

public class Service1 : IService1
{
    public void ThrowClass2()
    {
        throw new FaultException<Class2>(new Class2(), "Class2 Reason");
    }
}
Run Code Online (Sandbox Code Playgroud)

服务消费者

FaultTestService.Service1Client client = null;
try
{
    client = new FaultTestService.Service1Client();
    client.ThrowAmpFaults("InvalidParameter", 0);
}
catch (FaultException<Namespace.BaseClass1> fex)
{
    //DOES NOT GO IN HERE AS I WOULD EXPECT   
} …
Run Code Online (Sandbox Code Playgroud)

c# wcf

6
推荐指数
2
解决办法
6208
查看次数

标签 统计

c# ×1

wcf ×1