我对ASP.NET 2.0上的会话有一个非常奇怪的问题。我正在使用的系统使用会话变量来存储对象的参数(如问题和答案),以生成报告。这些是具有相同名称的类的实例,因此它们使用如下参数填充:
此报告是通过4个aspx页面生成的。首先定义位置和日期参数,第二页存储问题,第三个存储答案。最后一个显示Excel和HTML格式的生成报告的链接。 所有可变数据都存储在会话中,一切顺利,直到最后一页,当发生Session.Abandon()之类的事情时,会触发Session_End事件并且所有变量都会丢失。这种情况每天只发生一次,对于每个登录用户首次使用报告,然后你可以尝试整整一天几十次而不会再看到它。
问题发生在同一页面上,会话模式是InProc。
我已经完成了以下验证:
以下限制适用:
任何想法或解决方案都有帮助。我将保持联系,以便进行必要的更新和测试。
答案 0 :(得分:2)
我要感谢大家的努力!
我和我的团队发现了这起案件的情况。有一种方法是删除网站文件夹中的临时文件和目录,导致回收和会话刷新。代码是计算日期和时间,并且应该每24小时删除一次目录,因此当用户首次登录系统并生成报告时,它会删除目录并刷新会话。
答案 1 :(得分:1)
一些建议:
我认为正在发生的是#3。您正在设置会话中的值,然后在实际存储会话值的回发之前将其从该会话中消耗回来。由于它只是在第一次尝试时发生,这些症状反映了这种怀疑。如果我是正确的,你可以通过从消耗会话值的相同位置消费而不是设置会话来解决这个问题,然后尝试在同一个请求中从中提取。
答案 2 :(得分:0)
我遇到了会话问题。在我的情况下,问题是应用程序池的最大工作线程数。如果您要使用asp.net的默认会话,则必须将其设为1.或者其他线程无法获取会话。