WCF Rest WebFaultException始终返回202

时间:2013-02-05 22:43:30

标签: c# .net wcf wcf-rest

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

enter image description here

我们清楚地看到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 个答案:

答案 0 :(得分:0)

我在WcfRestContrib自定义错误处理方面遇到了一些问题。在这些情况下,将服务类属性从[ServiceConfiguration(“Rest”,true)]更改为[ServiceConfiguration(“Rest”,false)]最终解决了问题。或者,您可以将其保留为true,并尝试使用WebException而不是WebFaultException,例如

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