我在这里有一个非常奇怪的问题 - IIS 6 上的 ASP.NET 3.5 Webforms 应用程序。
效果是用户连接到我们的站点,并获得一个 ASP.NET 会话,输入一些数据,突然间,他输入的所有数据(并存储在会话中)都消失了。
错误日志向我们显示,出于某种奇怪的原因,他在我们的应用程序中工作的过程中刚刚获得了一个新会话。
从 IIS 日志中,我们看到在单个 ASP.NET 请求中,从用户浏览器报告的用户代理切换 - 从MSIE+7.0
....MSIE+8.0
这怎么可能?
日志摘录:
07:06:38 GET /SomePage.aspx 80 - x.x.x.139 Mozilla/4.0+ (compatible;+MSIE+7.0;+Windows+NT+5.1) 401
07:06:38 GET /SomePage.aspx 80 DOMAIN\USERNAME x.x.x.139 Mozilla/4.0+ (compatible;+MSIE+7.0;+Windows+NT+5.1) 200
07:06:39 GET /javascript/somefile.js 80 DOMAIN\USERNAME x.x.x.139 Mozilla/4.0+ (compatible;+MSIE+8.0;+Windows+NT+5.1) 200
(lots more requests for .css, .js, .gif, .jpg - all with MSIE+8.0 ....)
似乎对.aspx
页面的两个请求是在MSIE+7.0
模式下完成的,而对 CSS 和 JS 文件以及 GIF 和 JPG 图形的任何后续请求都会报告回来MSIE+8.0
...... WTF?!?!?
不确定这是否真的是 ASP.NET 会话突然丢失的根本原因 - 但用户代理本身的切换让我们摸不着头脑......有什么想法吗?
如果这种行为不是那些“丢失会话”的根本原因 - 关于可能是什么原因的任何想法/线索?到目前为止,我无法从这里、必应、谷歌或任何其他来源挖掘任何过于有用的东西......
更新:我在这个论坛帖子中读到,用户代理在第一个GET
(获取.aspx
页面)和后续GET
请求.css
之间不同的事实.js
可能导致会话丢失(尽管这是一个 PHP 环境)。谁能确认这是否也适用于 ASP.NET?(或表明此陈述不正确)
如果真的是这样 - 有没有办法告诉 ASP.NET不要仅仅因为用户代理字符串与先前的请求不匹配而开始新的会话?