C# WCF:IErrorHandler实现未按指定提供泛型错误
我已经实现了C# WCF:IErrorHandler实现未按指定提供泛型错误,c#,wcf,ierrorhandler,C#,Wcf,Ierrorhandler,我已经实现了IErrorHandler接口的providdefault方法,如下所示: public void ProvideFault(Exception ex, MessageVersion version, ref Message fault) { ResponseModel responseModel = new ResponseModel(); responseModel.EndDate = DateTime.Now; FaultException<Re
IErrorHandler
接口的providdefault
方法,如下所示:
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);
}
但是服务实现内部方法的测试总是失败,抱怨接收到的故障不是FaultException
类型,而是FaultException
:
Assert.That(() => client.CreateVersion(request), Throws.TypeOf<FaultException<ResponseModel>>());
Assert.That(()=>client.CreateVersion(请求),抛出.TypeOf());
为什么我在客户端接收到的是
FaultException
而不是FaultException
?可能相关:@ricardopers谢谢,但我的代码fault=Message.CreateMessage中已经有了(版本,msgFault,faultEx.Action);正如被接受的答案中所建议的。ResponseModel[DataContract]应用了吗?@Maximus感谢您的时间。是的,我设置了DataContract属性。
Assert.That(() => client.CreateVersion(request), Throws.TypeOf<FaultException<ResponseModel>>());