什么会导致Application_Start导致会话丢失?

时间:2013-10-11 10:12:47

标签: asp.net session logging global-asax application-start

我有一个在实时服务器上托管的网站,我的会话将继续丢失。

我已经在我的global.asax中添加了一些日志记录,以检查应用程序何时开始和结束以及会话开始和结束的位置以及是否存在应用程序错误。

当我导航到我的网站时,应用程序在我登录会话后启动并存储我的电子邮件和用户ID。之后,我只是在我的网站上浏览了一分钟左右然后我自动退出了。自动注销是会话为空的结果,然后我放弃了它。

以下是我上面测试的日志。

[11:4:57:802]   Application has started
[11:4:58:872]   Session has started
[11:4:58:890]   Set Email Sessions
[11:4:59:61]   Set PracticeId and PractitionerId Sessions
[11:6:49:838]   Application has started
[11:6:5:391]   Session has ended
[11:6:5:445]   Application has ended
[11:6:8:208]   Session has started
[11:6:8:338]   Abandon Session
[11:6:8:343]   Session has ended

我已经过测试,这不是特定链接的问题,在本地主机上运行网站时不会发生这种情况。我失去了我的会话,因为应用程序启动被解雇,我假设然后将会话设置为null。

什么可能导致application_start被随机触发?

1 个答案:

答案 0 :(得分:0)

您的IIS AppPool具有控制应用程序回收的配置选项。

例如:在没有任何活动的可配置时段之后,当超过内存使用率阈值时,在每天的特定时间,......

查看您的AppPool配置。

  

自动注销是会话为空的结果,然后我放弃了它。

对于自动注销,如果您使用的是表单身份验证,则只需因为会话已过期而无需自动注销。您仍将拥有表单身份验证cookie,其到期时间与会话到期完全无关。

在一个设计良好的应用程序中,您只需通过从持久存储(通常是数据库)加载它就可以重新生成Session中的任何内容。