在IE10中Angular js 204响应阻塞

时间:2013-06-25 02:40:45

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

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

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

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

SERVER代码段

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

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

这可能是角度误差吗?

CLIENT代码段

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 | POST | 204 | 295 B | 384.76 s |的XMLHttpRequest

任何想法?如果所有其他方法都失败了,我将不得不尝试将所有这些无效的WebAPI响应转换为空字符串。

1 个答案:

答案 0 :(得分:2)

目前我所拥有的最佳解决方案是解决问题。不要使用导致204的void响应,而是返回手动HttpStatusCode.OK(200)响应。

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

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