【问题标题】:Angular js 204 response blocking in IE10IE10中的Angular js 204响应阻塞
【发布时间】:2013-06-21 17:12:03
【问题描述】:

注意:参考本网站http://www.redbullracingshop.com.au/

我有一个 .net WebApi 与前端的角度 $.http 交互一起运行。一位客户最近提到该网站的动态功能已停止在 IE 中运行。

在几个浏览器中运行代码并观察请求后。我在 IE 中注意到了这一点。 Post 请求在将结果返回给客户端之前挂起或“挂起”了大约 2 分钟。我在服务器和 javascript 上运行了带有一些断点的代码以找到它锁定的位置,并发现请求触发正常并且服务器代码按预期执行。没有什么是停滞不前的。

服务器sn-p

[AcceptVerbs("POST")]
public void AddToCart(JObject jsonData){
   // DO CODE
}

我返回的是 void 响应或 204。这是我所期望的,我不认为这是一个错误。在服务器响应和客户端接收响应之间的某个地方,有 2 分钟的停顿?

这可能是角度错误吗?

客户sn-p

this.post = function (url, data, success, fail) {
    fail = (fail !== undefined) ? fail : success;
    $http.post(url, data)
        .success(function (data) {
            if (data.length == 0) {
                success(onEmpty(url));
            } else {
                success(data);
            }
        })
        .error(function (data) {               
            fail(onError(url, data));
        });
}

我调查并发现这仅发生在 IE10 中,而不是以前版本的实际版本,与开发控制台的模拟版本相反。

我知道 IE 用 204 响应做了一些有趣的事情,这在 IE10 中可能已经改变。看这里https://github.com/angular/angular.js/issues/357?source=cc

网络检查器结果如下:

/api/CartApi/AddToCart |发布 | 204 | 295乙| 384.76 秒 | XMLHttpRequest

有什么想法吗?如果一切都失败了,我将不得不尝试将所有这些 void WebAPI 响应转换为空字符串。

【问题讨论】:

  • 您使用的是哪个版本的 Angular?
  • //ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js
  • 您是否按照guide中的说明进行操作
  • @callmekatootie 是的。我真的不认为这与此有关,因为响应永远不会到达前端。这似乎只是参考 $http。
  • 您是否正在使用 SSL?我们在处理“待处理”请求时遇到了麻烦,结果证明这是由 Angular 有时喜欢有时不喜欢的自签名证书引起的。

标签: api asp.net-mvc-4 angularjs internet-explorer-10


【解决方案1】:

目前我最好的解决方案是变通。不要使用导致 204 的 void 响应,而是返回手动 HttpStatusCode.OK (200) 响应。

[AcceptVerbs("POST")]
public HttpResponseMessage AddToCart(JObject jsonData){
   // DO CODE
   return request.CreateResponse(HttpStatusCode.OK);
}

我仍然对这个错误的解释感到好奇。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多