繁体   English   中英

使用JavascriptCallbackBehavior时如何抛出带有HTTP错误代码的WebFaultException?

[英]How to throw WebFaultException with HTTP error codes when using JavascriptCallbackBehavior?

我在客户端上有一个.Net服务器应用程序(持有WCF REST JSONP服务)和一个javascript应用程序。

为了避免从JavaScript端进行跨域调用,我们使用JSONP进行通信。 为了简化服务器端的JavaScript回调,我们使用JavascriptCallbackBehavior :WCF将所有JSON响应包装在回调函数中。

[JavascriptCallbackBehavior(UrlParameterName = "$callback")]
[ServiceBehavior(...)]
public class MySvcREST : ISvcREST
{
   public bool SvcMethod()
   {
      throw new WebFaultException<string>("ERROR!", HttpStatusCode.InternalServerError);
   }
}

如果使用上面的代码,我将从服务中获得以下响应:

HTTP/1.1 200 OK
Content-Length: 31
Content-Type: application/x-javascript
Server: Microsoft-HTTPAPI/1.0
Date: Fri, 03 Aug 2012 11:43:26 GMT

angular.callbacks._1("ERROR!",500);

EDIT1:实际上,即使删除JavascriptCallbackBehavior并保留默认的callback名称,我也会产生类似的效果,效果不是很好。

我真的想获取HTTP 500错误代码,而不是其中包含错误的HTTP 200 OK

如何解决我的问题,或者还有另一种从WCF服务获取JSONP的方法?

不幸的是,我没有得到任何答复,但是我发现以下一些有用的链接: http : //msdn.microsoft.com/en-us/library/ee816916.aspx

我了解此行为是设计使然...尽管从javascript方面(jquery / angular js)来看,在撰写本文时,尚无法读取第二个返回的参数(在我的情况下为http错误代码)。

因此,最后我不确定是否有解决方法以外的解决方案。 现在,我们返回一个CustomResult ,其中包含一个自定义错误代码和消息。

当这些网络技术无法相互融合时,它们会令人非常失望……您不得不采取许多解决方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM