当我的代码中有异常时,我希望将它作为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);
}
}
答案 0 :(得分:0)
我在WcfRestContrib自定义错误处理方面遇到了一些问题。在这些情况下,将服务类属性从[ServiceConfiguration(“Rest”,true)]更改为[ServiceConfiguration(“Rest”,false)]最终解决了问题。或者,您可以将其保留为true,并尝试使用WebException而不是WebFaultException,例如
throw new
WcfRestContrib.ServiceModel.Web.Exceptions.WebException(HttpStatusCode.BadRequest, "My custom error!");