1

使用 aspnet_regsql 实现 SQL Server 会话提供程序。

在 Web 配置中

<sessionState mode ="SQLServer" cookieless="false" timeout="1" allowCustomSqlDatabase="true" sqlConnectionString="Password=ads;Persist Security Info=True;User ID=sa;Initial Catalog=ASPState;Data Source=DF" />

创建会话时,会在数据库中为该会话添加新行,但是当会话到期时,它不会删除该行。我们是否需要手动自定义删除过期会话的方法?如果是,请说明我们需要重写的方法。

谢谢,普拉文

4

2 回答 2

0

您可以通过以下代码手动执行此操作

HttpContext.Current.Session.Remove("session");
HttpContext.Current.Session.Abandon();
于 2012-04-17T04:50:36.597 回答
0

浏览实现 Session-State Store Provider删除过期的会话存储数据部分。

当为会话调用Abandon 方法时,将使用RemoveItem 方法从数据存储中删除该会话的数据。否则,数据将保留在会话数据存储中,以服务于会话的未来请求

删除过期会话数据的机制取决于数据源的功能。如果您的数据源可以配置为根据会话 Timeout 属性删除过期会话数据,则可以使用SetItemExpireCallback方法引用Session_OnEnd事件的委托,并在删除过期会话数据时引发它。

参考:过期后从数据库中删除会话?

于 2012-04-17T04:52:24.050 回答