gpt4 book ai didi

ASP.NET sessionState SQLServer模式超时不起作用

转载 作者:行者123 更新时间:2023-12-04 03:45:45 26 4
gpt4 key购买 nike

我已将sessionState配置为使用下面的自定义SQL服务器,并将其设置为1分钟后过期。 session 似乎始终保留在浏览器和sql服务器上。我什至将regenerateExpiredSessionId设置为false,仍然存在相同的问题。我正在IIS 7 Windows 7 Pro下运行asp.net 4.0。

我的web.config配置

<sessionState mode="SQLServer" allowCustomSqlDatabase="true" sqlConnectionString="Data Source=MYCON\SQL2008REXPRESS;Initial Catalog=DBASPState; User ID=DB1543Write;Password=test" timeout="1" sqlCommandTimeout="10" regenerateExpiredSessionId="false" stateNetworkTimeout="10" compressionEnabled="true" cookieless="false" />

我已经检查了sessionstate数据库中的表ASPStateTempSessions并看到了其中的记录。读写,所有者权限是当前使用此数据库的当前用户配置的。 “Even Viewer”没有错误。

我已经检查了ASPStateTempSessions表中的值,并且在下面看来,该 session 已关闭,而5小时则是1分钟。好像asp.net配置为使用另一个时区而不是当前计算机时区在1分钟内过期。

我目前的时间是12/17/2011 11:29 AM
数据库列的值为CreatedDate(column)2011-12-17 17:29:01.677
Expires(column)2011-12-17 17:30:03.903

有关数据库值的完整详细信息如下。

第一个记录是我第一次访问我的网站时
SessionId, Created, Expires, LockDate, LockDateLocal, LockCookie, Timeout, Locked, SessionItemShort, SessionItemLong, Flags
0wtp4j0traj5e0gydygkyoe22476b033 2011-12-17 17:29:01.677 2011-12-17 17:30:03.903 2011-12-17 17:29:03.873 2011-12-17 11:29:03.873 11 1 False <Binary data> NULL 0

在按下浏览器上的“刷新”按钮后,记录已使用新的过期时间进行了更新,但是 session 信息仍然存在
0wtp4j0traj5e0gydygkyoe22476b033    2011-12-17 17:29:01.677 2011-12-17 17:37:08.910 2011-12-17 17:36:08.907 2011-12-17 11:36:08.907 13  1   False   <Binary data>   NULL    0

有任何想法吗?

最佳答案

到期时间为UTC。

当SQL session 到期时,它们不会立即从 session 表中删除,也不会收到Session_End事件。

SQL session 提供程序不会主动监视 session 表中的Expires列。相反,在 session 从表中删除之前, session 不会“正式”过期,这是通过调用DeleteExpiredSessions存储过程的SQL Agent作业完成的。默认情况下,作业配置为每60秒运行一次。当然,这意味着需要运行SQL Agent才能使 session 到期。这也意味着您需要在“标称”到期后至少等待60秒,然后再进行“实际”到期。

如果需要,可以通过自己调用SP来强制到期。

关于ASP.NET sessionState SQLServer模式超时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8546685/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com