IE9 XmlHttpRequest返回12019错误而不是HTTP / 417响应代码

我对客户端的WCF服务的ajax请求有一些error handling,

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 //... 

如果清除缓存没有帮助,则可能与URLMon如何包装某些HTTP错误状态代码有关; 例如IE9及以下版本会将HTTP / 204响应转换为伪造的1223状态代码(请参阅http://www.enhanceie.com/ie/bugs.asp )

在IE10中修复了此问题,以便服务器的响应状态正确返回到脚本。