我有一个 WCF 4 Rest 服务将由一个 java 客户端和一个 c# mvc3 客户端使用。响应内容需要以 json 格式返回。
我希望能够以一致的方式将任何异常/故障返回给客户端。我读到应该使用 WebFaultException 并且确实可以正常工作。
但是,我不想用 WebFaultExceptions 污染我的应用程序逻辑项目,因为它可能被非 Web 项目使用。
因此,我查看了在 WCF Rest 服务中实现 IErrorHandler 以捕获任何异常,然后对于特定的异常,即 ValidationException,将异常作为包装在 WebFaultException 中的错误返回。但是,这似乎不起作用,当我调用 form fiddler 时,我得到以下 Http 504 响应
[Fiddler] ReadResponse() 失败:服务器没有返回对此请求的响应。
我已将代码简化为最基本的内容,以显示我正在做的事情的本质。
public void ProvideFault(Exception error,
MessageVersion version,
ref Message fault)
{
var ex = new WebFaultException<Exception>(
new Exception("you can't do that"),
HttpStatusCode.Unauthorized);
var xmf = ex.CreateMessageFault();
fault = Message.CreateMessage(version,
null,
xmf,
new DataContractJsonSerializer(xmf.GetType()));
}
我究竟做错了什么?