• 技术文章 >后端开发 >C#.Net教程

    ASP.NET在IE10中无法判断用户已登入及Session丢失问题解决方法

    高洛峰高洛峰2017-01-07 09:54:36原创713

    今天发现在IE10中登录我公司的一个网站时,点击其它菜单,页面总会自动重新退出到登录页,后检查发现,IE10送出的HTTP头,和.AUTH Cookie都没问题,但使用表单验证机制(FormsAuthentication)却无法判断该用户已登入,保存的Session总会丢失.

    后查实这是ASP.NET 2.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 [英文]
    简单的解决方法是,在网站根目录,新增一个浏览器定义文件(browser definition file)

    步骤如下:
    1.添加一个"App_Browsers"文件夹
    2.添加一个"*.browser"后缀的文件,如IE10.browser.
    3.添加文件内容如下:

    <browsers> 
    <browser refID="Default"> 
    <capabilities><!-- To avoid wrong detections of e.g. IE10 --> 
    <capability name="cookies" value="true" /> 
    <capability name="ecmascriptversion" value="3.0" /> 
    </capabilities> 
    </browser> 
    </browsers>


    更多ASP.NET在IE10中无法判断用户已登入及Session丢失问题解决方法相关文章请关注PHP中文网!


    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:Session 丢失
    上一篇:asp.net BasePage类+Session通用用户登录权限控制 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 解决asp.net中“从客户端中检测到有潜在危险的Request.Form值”的错误• 从0自学C#04--特性和设计原则• 【c#教程】C# 属性(Property)• asp.net 图片验证码的HtmlHelper• asp.net生成验证码(纯数字)
    1/1

    PHP中文网