注意:参考本网站http://www.redbullracingshop.com.au/
我有一个.net WebApi在前端运行角度$ .http交互.一位客户最近提到该网站的动态功能已停止在IE中工作.
在几个浏览器中运行代码并观察请求之后.我注意到在IE中.在将结果返回给客户端之前,Post请求挂起或"挂起"大约2分钟.我在服务器和javascript上运行了一些断点,找到它锁定的位置,发现请求触发正常,服务器代码按预期执行.没有什么能在这里停滞不前.
SERVER片段
[AcceptVerbs("POST")]
public void AddToCart(JObject jsonData){
// DO CODE
}
Run Code Online (Sandbox Code Playgroud)
我正在返回一个无效响应,或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));
});
}
Run Code Online (Sandbox Code Playgroud)
我调查过,发现这只发生在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响应转换为空字符串.
说我有这个混合:
.loop-strings("A, B, C", "1, 2, 3", "X, Y, Z";);
Run Code Online (Sandbox Code Playgroud)
像这样实现:
.loop-strings(@list, @index: 1) when (isstring(extract(@list, @index))) {
@currentMember: extract(@list, @index);
.do-something-with(@currentMember);
.loop-strings(@list, (@index + 1)); /* loop the next member */
}
.do-something-with(...) {
@args1 : e(@arguments);
@args2 : A, B, C;
args1: @args1;
args2: @args2;
extract-args1-2: extract(@args1, 2);
extract-args2-2: extract(@args2, 2);
}
Run Code Online (Sandbox Code Playgroud)
结果:
args1: A, B, C;
extract-args1-2: extract(A, B, C, 2);
args1: 1, 2, 3;
extract-args1-2: extract(1, 2, 3, 2);
args1: X, Y, Z;
args2: A, B, …
Run Code Online (Sandbox Code Playgroud)