Session IE6访问MVC3 web应用程序将丢失会话状态

Session IE6访问MVC3 web应用程序将丢失会话状态,session,asp.net-mvc-3,internet-explorer-6,session-state,Session,Asp.net Mvc 3,Internet Explorer 6,Session State,我正在调查我的MVC3/.NET 4站点中的一个bug,该站点运行在IIS7.5上,集成管道只有在使用IE6访问时才会显示出来 pseudo中的过程是: 浏览器请求页面A;服务器集 会话[]值,并以 这一页。 在A页输入数据,然后 http将表单发回。 服务器尝试从会话[]中获取值 以前在1中设置,但返回 空>>但仅在IE6、8中。 在IE7、IE8、IE9、Firefox 3.6、Safari 5.0.3、Chrome 10中,相同的代码不会改变 在我的global.asax代码中,我放入了一

我正在调查我的MVC3/.NET 4站点中的一个bug,该站点运行在IIS7.5上,集成管道只有在使用IE6访问时才会显示出来

pseudo中的过程是:

浏览器请求页面A;服务器集 会话[]值,并以 这一页。 在A页输入数据,然后 http将表单发回。 服务器尝试从会话[]中获取值 以前在1中设置,但返回 空>>但仅在IE6、8中。 在IE7、IE8、IE9、Firefox 3.6、Safari 5.0.3、Chrome 10中,相同的代码不会改变

在我的global.asax代码中,我放入了一个会话启动处理程序,并注意到一些奇怪的行为。 在IE6中,每个请求都会触发此处理程序,但Session.SessionID值保持不变。上面提到的所有其他浏览器只有在第一次发出请求时才会触发此处理程序。因此,对于IE6,即使会话ID在每次调用时都是相同的,但它“启动”新会话的事实似乎具有清除会话ID数据并再次启动会话ID的效果,因此为空值

我的一个理论是,由于页面图像等上的某些项目将通过HTTP访问,而页面本身是HTTPS,这可能是IE6导致这种行为的原因——可能是新的会话协议?但我关闭了迫使在相关页面上使用HTTPS的代码,因此所有请求都是HTTP。不幸的是,IE6上仍观察到同样的行为

在谷歌搜索了很多次之后,我发现一些东西说域中的下划线之类的东西可能会导致我的域中没有下划线,请确保IE6正在接受cookies我的测试VM设置为接受所有会话cookies

最后,在最后一次尝试中:

我把IE6中的所有隐私和安全设置都调到了我能做到的最低水平 我添加了我的测试站点http:///MyApp 到受信任的站点列表 清除internet临时文件和Cookie 但我还是遇到了同样的问题。我已经想到了一种解决方法,在这种情况下不使用Session,但我宁愿在IE6适用于所有其他浏览器(包括IE的Decentant版本)时不进行更改

编辑:在另一个页面上进行一些进一步的测试,当通过IE6访问时,会话值在通过访问另一个页面存储后被正确检索。更具体地说:

工作页-搜索:

进行搜索后,结果将显示并显示 条件存储在会话中。 单击其中一个结果进行查看,详细信息页面获取条件,以便为面包屑线索链接构建查询字符串。 失败页面-2阶段登录:

转到第一阶段登录页面,输入用户名和密码,假设用户名为的存储加密http only cookie值正确。 重定向到第二阶段登录页面,在会话中将3个索引值列表存储到一个秘密字中 从一个秘密单词中输入3个字符并发回。 访问会话以获取3个索引值-不获取任何内容。 由于上述更一般的描述中的观察结果,故障原因显而易见。这一点越来越奇怪,也越来越令人沮丧