2013-07-11 56 views
1

我对AJAX请求WCF服务在客户端一些错误处理,IE9的XmlHttpRequest返回12019错误而不是HTTP/417响应代码

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

这在IE的旧版本中发生了相当的量,http://forums.asp.net/t/1126173.aspx。你可以尝试链接中的步骤吗? – Chris

回答

2

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

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

相关问题