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

时间:2013-07-11 12:48:09

标签: jquery asp.net wcf internet-explorer

我对客户端的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
//...

1 个答案:

答案 0 :(得分:2)

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

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