如何在使用JavascriptCallbackBehavior时引发带有HTTP错误代码的WebFaultExcepti



我在客户端有一个.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错误代码,而不是里面有错误的HTTP200 OK

如何解决我的问题,或者有其他方法可以从WCF服务获得JSONP吗?

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

我知道这种行为是故意的。。。尽管从javascript端(jquery/angular js)来看,在编写本文时,无法读取第二个返回的参数(在我的情况下,是http错误代码)。

所以,最后我不确定除了变通办法之外是否还有其他解决方案。现在,我们返回一个CustomResult,其中包含一个自定义错误代码和消息。

当这些网络技术不能相互融合时,真是令人失望。。。你不得不采取很多变通办法。

相关内容

  • 没有找到相关文章

最新更新