最近做网站,在本机测试没问题,放到服务器,用同样的浏览器访问,页面不兼容了不说,而且cookie丢失,登陆不上了,查了下资料,发现是IE10的漏洞。
这是ASP.NET2.0,3.5和4.0的Bugs,因这些版本无法识别IE10的User-Agent标头字符串,所以无法识别用户浏览器的版本,从而导至了ASP.NET的特定功能失效,认为游览器不支持Cookies功能,不处理与Cookie相关的程式码等,从而在浏览器中不保存服务器返回的Session标识,造成丢失等.
这个问题早经微软官方确认,是IE10的一个Bug,也发布了两个HOTFIX专门用来修复这个问题,各位如遇到同样的问题,可参考以下说明:
· KB2600088:Hotfix适用在 Microsoft.NET Framework 4.0中的 ASP.NET [英文]
· KB2608565:Hotfix 适用在 .NET Framework 3.5.1中的 ASP.NET [英文]
· KB2600100:Hotfix 适用在 .NET Framework 3.5 SP1 与 .NET Framework 2.0 SP2 中的 ASP.NET [英文]
ASP.NET [英文]
简单的解决方法是,在网站根目录,新增一个浏览器定义文件(browserdefinition file)
步骤如下:
1.添加一个"App_Browsers"文件夹到网站根目录
2.在第一步的文件夹中添加一个"*.browser"后缀的文件,如IE10.browser.
3.在第二步的文本添加文件内容如下:
<browsers>
<browser refID="Default">
<capabilities><!-- To avoidwrong detections of e.g. IE10 -->
<capabilityname="cookies" value="true" />
<capabilityname="ecmascriptversion" value="3.0" />
</capabilities>
</browser>
</browsers>
设定完成,问题即可解决,本方法同时也适用于处理asp.net中控件事件回发操作无效问题。