我对客户端的WCF服务的ajax请求进行了一些错误处理,
self.remove = function (dep, processingResult) {
var data = { "id": dep };
$.ajax({
url: 'my.svc/remove',
type: 'POST',
contentType: 'application/json',
dataType: "json",
cache: false,
data: JSON.stringify(data),
complete: function (e, xhr, settings) {
var message = self.getMessage(e.status);
switch (e.status) {
case 200:
processingResult();
break;
case 417:
console.log(e.statusText);
radalert(message + e.statusText, null, null, "417");
break;
default:
{
console.log(e.statusText);
radalert(message, null, null, "bekey");
}
}
}
});
};
在某些情况下我返回错误417,但IE9得到的结果有12019错误。 所有其他浏览器,包括IE10获得正确的值。
为什么会发生这种情况以及如何解决?
12019 - ERROR_INTERNET_INCORRECT_HANDLE_STATE 请求的操作不能执行,因为 提供的句柄未处于正确状态。
看起来像返回这段代码并不是那么好的做法。我是对的吗?
WebOperationContext ctx;
//....
ctx.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.ExpectationFailed;//417
//...
答案 0 :(得分:2)
如果清除缓存没有帮助,则可能与URLMon如何包装某些HTTP错误状态代码有关;例如,IE9及以下版本会将HTTP / 204响应转换为伪造的1223状态代码(参见http://www.enhanceie.com/ie/bugs.asp)
此问题已在IE10中修复,以便服务器的响应状态正确返回到脚本。