0

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

我在 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

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

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

4

1 回答 1

0

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

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

查看您的 AppPool 配置。

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

至于自动注销,如果您使用的是表单身份验证,那么您不需要因为您的 Session 已过期而自动注销。您仍将拥有 Forms Authentication cookie,其到期时间完全独立于 Session 到期时间。

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

于 2013-10-11T10:17:39.313 回答