0

我们有一个 ASP.NET 应用程序,它在以前版本的 Internet Explorer 10 中没有任何问题。

但是相同的应用程序在 Internet Explorer 10 中不起作用。

当我调查这个问题时,我发现 .asmx Web 服务的引用得到 401-unauthorized 错误。

IE10 有问题的请求和 IE9 的工作请求之间的唯一区别是:User-Agent 字符串。

让我告诉你区别:

下面的请求是 IE10 的有问题的请求。


GET http://abc.com/Services/ResourceService.asmx/jsdebug HTTP/1.1
Accept: application/javascript, */*;q=0.8
Referer: http://abc.com/def/ghi.aspx
Accept-Language: tr-TR
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)
Connection: Keep-Alive
DNT: 1
Host: sgmiis2:8090
Cookie: .ASPXANONYMOUS=XXXASP.NET_SessionId=YYY;ASPXAUTH=ZZZ;

它越来越

401 - 未经授权:由于凭据无效,访问被拒绝。


这是同一应用程序在 IE10 之前的请求。

GET http://abc.com/Services/ResourceService.asmx/jsdebug HTTP/1.1
Accept: application/javascript, */*;q=0.8
Referer: http://abc.com/def/ghi.aspx
Accept-Language: tr-TR
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/6.0;)
Connection: Keep-Alive
DNT: 1
Host: sgmiis2:8090
Cookie: .ASPXANONYMOUS=XXXASP.NET_SessionId=YYY;ASPXAUTH=ZZZ;

但是这个请求正在工作并且得到

HTTP/1.1 200 正常


如您所见,唯一的区别是用户代理标头的“MSIE 10.0”和“MSIE 7.0/MSIE 8.0/MSIE 9.0”部分。

我正在通过 Fiddler 的 Composer 部分创建请求。所以没有真正得到 401 错误的风险。(我的意思是错误的 cookie)因为当我只更改用户代理字符串时,我可以成功获得 HTTP 200 的响应。

知道如何解决这个问题吗?

谢谢,

法提赫。

4

1 回答 1

0

ie 10 有很多问题。

Microsoft .NET 中的 ASP.NET 浏览器定义文件有一个修补程序

对于 .NET 4.0,请参阅http://support.microsoft.com/kb/2600088对于.NET 3.5 ,请参阅http://support.microsoft.com/kb/2608565

另请检查:- http://connect.microsoft.com/VisualStudio/feedback/details/662275/asp-net-user-agent-sniffing-and-ie10-internet-explorer-10

我希望它会帮助你。

于 2013-09-04T13:40:09.153 回答