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

标签 javascript wcf rest cross-domain jsonp

我有一个 .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);

编辑1:实际上,即使我删除JavascriptCallbackBehavior并保留默认的callback名称,我也会有类似的效果,这不是很很好。

我确实想要获取 HTTP 500 错误代码,而不是包含错误的 HTTP 200 OK

如何解决我的问题或者是否有其他方法从 WCF 服务获取 JSONP?

最佳答案

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

我明白这种行为是设计使然...虽然从javascript端(jquery/Angular js),但在撰写本文时,无法读取第二个返回参数(在我的例子是 http 错误代码)。

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

当这些网络技术无法相互融合时,它们真是令人失望……您被迫采用如此多的解决方法。

关于javascript - 使用 JavascriptCallbackBehavior 时如何抛出带有 HTTP 错误代码的 WebFaultException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11795188/

相关文章:

javascript - 防止 JavaScript 方法运行两次直到其执行结束

javascript - d3.js - 在任一图表上使用滚轮/拖动时,堆叠图表都放大和缩小/滚动

c# - 测试命名管道绑定(bind)是否可用或已在使用中

wcf - basicHttpBinding、webHttpBinding 和 mexHttpBinding 端点如何共存于一个 WCF 服务中

c# - ServiceController.Start() 未达到 "Running"状态

c# - RestSharp AddFile 将多部分表单标题添加到文件

javascript - 如何创建 Gatsby 的 Link 组件和链接的 <a> 标签的条件渲染?

wcf - WebGet UriTemplate 在点 ('.'/%2E 上失败)?

rest - 在类级别上具有空值的 Jersey 注释 @Path 不起作用

javascript - 在 Javascript 中向日期添加可变数字