3

我已经实现ProvideFaultIErrorHandler接口的方法如下:

public void ProvideFault(Exception ex, MessageVersion version, ref Message fault)
{
    ResponseModel responseModel = new ResponseModel();
    responseModel.EndDate = DateTime.Now;

    FaultException<ResponseModel> faultEx;

    if (ex is FaultException<ResponseModel>)
    {
        return;
    }
    ServerCoreException coreException = ex as ServerCoreException;
    if (coreException != null)
    {
        ServerCoreException serverCoreException = coreException;
        faultEx = new FaultException<ResponseModel>(responseModel,
        new FaultReason(serverCoreException.Message),
        new FaultCode(serverCoreException.ErrorCode.ToString()));
    }
    else
    {
        faultEx = new FaultException<ResponseModel>(responseModel,
        new FaultReason(ex.Message),
        new FaultCode("-1"));
    }
    MessageFault msgFault = faultEx.CreateMessageFault();
    fault = Message.CreateMessage(version, msgFault, faultEx.Action);
}

然后我将此实现添加到每个调用ChannelDispatcherBase的另一个实现中。我的服务实现用这个属性装饰,并且还具有:IServiceBehaviorGlobalErrorBehaviorAttributeFaultContractAttribute

[FaultContract(typeof(ResponseModel), Name = "ServiceFaultException",
             Namespace = "http://ws.net.core/base/model")]

但是对服务实现中的方法的测试总是失败,抱怨收到的错误不是类型FaultException<ResponseModel>,而是FaultException

Assert.That(() => client.CreateVersion(request), Throws.TypeOf<FaultException<ResponseModel>>());

为什么我收到FaultException而不是FaultException<ResponseModel>在客户端?

4

0 回答 0