为什么超时后Session对象没有被删除?
我使用的是 Asp.Net 4.0,会话状态配置如下。
<sessionState mode="SQLServer" cookieless="false" timeout="5"
allowCustomSqlDatabase="true"
sqlConnectionString="data source=.\SqlExpress;initial catalog=App_SessionState;user id=sa;password=xxxxxxxx"/>
如果我在浏览器中大约 10 分钟没有活动,是否应该删除 Session 对象。但 10 分钟后我仍然可以访问 Session 变量。我在这里错过了什么吗?
EDIT:
如果我在 10 分钟后访问会话变量(如下所示),我不应该得到NULL
var myObj = Session["MyKey"] as MyClass;
10 分钟后 mObj 不为 NULL。
安装了一个名为的存储过程DeleteExpiredSessions
,从工作中调用ASPState_Job_DeleteExpiredSessions
,并且每分钟执行一次(如果我正确读取InstallSqlState.sql文件)。
该过程基本上调用DELETE FROM ASPStateTempSessions WHERE Expires < GETUTCDATE()
因此,如果对象未删除,请检查“过期”列,并验证您是否正在与utc日期。如有疑问,请执行以下操作:SELECT * FROM ASPStateTempSessions WHERE Expires < GETUTCDATE()
。另外,请确保您的ASPState_Job_DeleteExpiresSessions
已启用并正在工作。
一个快速的(并且完全未经证实的想法); SQL Server Express 是否附带 SQL 代理?它是否已启用并能够执行计划的作业?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)