我在 ASP.NET 2.0 上遇到了一个非常奇怪的 session 问题。我正在使用的系统使用 session 变量来存储对象(如问题和答案)上的参数以生成报告。这些是同名类的实例,因此它们填充了如下参数:
该报告是通过 4 个 aspx 页面生成的。第一个定义位置和日期参数,第二个页面存储问题,第三个存储答案。最后一个显示指向生成的 Excel 和 HTML 格式报告的链接。
所有变量数据都存储在 session 中,一切顺利,直到最后一页,当 Session.Abandon() 之类的事情发生时,Session_End 事件被触发,所有变量都丢失了。对于第一次使用报告的每个登录用户,这种情况每天只会发生一次,然后您可以一整天尝试数十次并且不会再次看到它。
该问题始终发生在同一页面上,并且 session 模式为 InProc。
我已经完成了以下验证:
以下限制适用:
任何想法或解决方案都是有帮助的。对于任何必要的更新和测试,我会保持联系。
最佳答案
我要感谢大家的努力!
我和我的团队发现了这个案例中发生的事情。有一种方法可以删除网站文件夹中的临时文件和目录,从而导致回收和 session 刷新。该代码正在计算日期和时间,并且应该每 24 小时删除一次目录,因此当用户首次登录系统并生成报告时,它删除了目录并刷新了 session 。
关于ASP.NET session 意外结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6508424/