【问题标题】:How to throw WebFaultException with HTTP error codes when using JavascriptCallbackBehavior?使用 JavascriptCallbackBehavior 时如何抛出带有 HTTP 错误代码的 WebFaultException?
【发布时间】:2012-08-01 11:17:47
【问题描述】:

我在客户端有一个 .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?

【问题讨论】:

  • @CarlosFigueira 是这些事情的主人......我很感激你的帮助:)

标签: javascript wcf rest cross-domain jsonp


【解决方案1】:

很遗憾,我的问题没有得到任何答复,但我发现以下有点有用的链接:http://msdn.microsoft.com/en-us/library/ee816916.aspx

我理解这种行为是设计使然...虽然从javascript方面(jquery / angular js),在撰写本文时,没有办法读取第二个返回的参数(在我的情况,http 错误代码)。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 2012-11-17
    • 1970-01-01
    相关资源
    最近更新 更多