WCF Rest WebFaultException 总是返回 202

Posted

技术标签:

【中文标题】WCF Rest WebFaultException 总是返回 202【英文标题】:WCF Rest WebFaultException always return 202 【发布时间】:2013-01-21 00:30:38 【问题描述】:

当我的代码中有异常时,我想将其作为 FaultException/WebFaultException 返回,具体取决于它是 REST 还是 SOAP。以下问题与我的项目的 REST 组件有关。触发了异常,我在调试窗口中看到了它(见图)。

我们清楚地看到 WebFaultException 正在被触发,但我在 JSON 中的响应不是 http badrequest 也不是我的异常消息,而是始终如下:

"readyState":4,"responseText":"","status":202,"statusText":"Accepted"

这是我的界面:

[WebInvoke(Method = "POST", UriTemplate = "/Package/", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
[FaultContract(typeof(FaultException))]
[OperationContract]
string CopyZip(Stream zippedPackage);

这是它的实现:

public string CopyZip(Stream zippedPackage)

   try
   
      ZipCreator pck = new ZipCreator();
      pck.CopyUploadedZip(zippedPackage);
      return "Zipped";
   
   catch (Exception ex)
   
   //throw new FaultException(ex.Message);
      throw new WebFaultException<string>(ex.Message,             HttpStatusCode.BadRequest);
   

【问题讨论】:

您解决了这个问题吗?我像以前一样被困住了。 【参考方案1】:

我看到一些帖子的问题在于 WcfRestContrib 自定义错误处理。在这些情况下,将服务类属性从 [ServiceConfiguration("Rest", true)] 更改为 [ServiceConfiguration("Rest", false)] 最终解决了问题。或者,您可以将其保留为 true,并尝试使用 WebException 而不是 WebFaultException,就像这样

throw new
    WcfRestContrib.ServiceModel.Web.Exceptions.WebException(HttpStatusCode.BadRequest, "My custom error!");

【讨论】:

以上是关于WCF Rest WebFaultException 总是返回 202的主要内容,如果未能解决你的问题,请参考以下文章

WCF + REST,增加 MaxStringContentLength

如何从基于 REST 的 WCF 服务中读取授权标头?

WCF 4.0 REST 用户名密码认证

用于 Xamarin 表单的 Rest + WCF 集成

WCF 服务的 REST / SOAP 端点

如何在 REST 模式下使用 WCF 服务?