0

我正在尝试实施IErrorhandler这被证明是一个真正的痛苦!

我已经像这样从界面中实现了provideFault方法IErrorhandler......

    public void ProvideFault(Exception error, MessageVersion version, ref Message fault)
    {
        FaultException<ServiceFault> faultException = ServiceMethods.BuildFaultException<ServiceFault>("Provide Fault Error", error.Message);
        MessageFault messageFault = faultException.CreateMessageFault();

        fault = Message.CreateMessage(version, messageFault, faultException.Action);
    }

如果我的服务操作遇到异常,它将进入此方法以创建一个FaultException. 我的问题是客户没有得到这个FaultException返回给他们。

我在这里遗漏了一些明显的东西吗?

提前致谢

4

2 回答 2

1

如果您没有看到FaultException<ServiceFault>客户端,请仔细检查您是否没有错过服务的故障合同

[ServiceContract]
public interface IHelloService
{
    [OperationContract]
    [FaultContract(typeof(ServiceFault))]
    void DoWork();
}
于 2013-12-04T11:16:07.473 回答
0

我对 WCF 有一点经验,但我认为您只是在创建一条消息,而不是通过请求或响应发送它。我认为出于这个原因,您的客户没有收到异常消息。

你实现了IErrorHandler接口的方法HandleError了吗?

您的问题类似于 SO 中已经提出的这些问题:

也许他们可以帮助你。

另请阅读MSDN 中的此线程

于 2013-12-04T10:52:00.857 回答