我正在调查我的MVC3 / .NET 4站点中的一个错误,该站点在IIS7.5上运行,其集成管道仅在使用IE6访问时才会显示。
伪过程是:
在IE7,IE8,IE9,Firefox 3.6,Safari 5.0.3,Chrome 10中,相同的代码无需更改。
在我的global.asax代码中,我放入了一个Session_Start处理程序,并发现了一些奇怪的行为。 在IE6中,每次发出请求时都会触发此处理程序 BUT ,Session.SessionID值保持不变。上面提到的所有其他浏览器只在第一次发出请求时触发此处理程序。因此,对于IE6,即使会话ID在每次调用时都是相同的,似乎它“开始”新会话的事实似乎具有清除会话ID的数据并再次启动它的效果空值。
我得到的一个理论是,因为页面上的某些项目(图像等......)将通过HTTP访问,而页面本身就是HTTPS可能是IE6导致此行为的原因(每个协议的新会话可能?)但我转过身来关闭迫使HTTPS在相关页面上使用的代码,因此所有请求都是HTTP。不幸的是,在IE6上仍然观察到相同的行为。
经过大量谷歌搜索后,我发现在域中出现类似下划线的内容会导致这种情况(我的内容中没有下划线),确保IE6接受cookie(我的测试虚拟机设置为接受所有会话cookie)。 / p>
最后在最后一次尝试中:
我仍然遇到同样的问题。我想到了一种修复它的方法,涉及不使用Session这种情况,但我宁愿不在IE6中进行更改,因为它适用于所有其他浏览器,包括IE的后代版本。
编辑:在另一个页面上进行一些进一步的测试,当通过IE6访问时,会话值在通过访问另一个页面进行存储后正确检索。更具体地说:
工作页面 - 搜索:
失败的页面 - 2阶段登录:
由于在上面更一般的描述中进行的观察,失败的原因是显而易见的。这只是一分钟变得更加怪异(而且更令人沮丧)。