asp.net - 如何回收存储在 SQL Server 中的 ASP.NET session ?

标签 asp.net

所以我们刚刚开始使用存储在 SQL 服务器中的 ASP.NET session - 它们非常简洁。但是,由于 session 现在持续跨应用程序池回收,如果我们部署新代码,这可能会给我们带来问题。有没有办法(在重新启动 SQL 服务器之外)强制在此模型中放弃所有 session (或至少应用程序池的所有 session )?

最佳答案

将其添加为 ASPState 数据库中的存储过程:

        CREATE PROCEDURE [dbo].[DeleteExpiredSessions]
    AS
        DECLARE @now datetime
        SET @now = GETUTCDATE()

        DELETE [ASPState].dbo.ASPStateTempSessions
        WHERE Expires < @now

        RETURN 0

然后向定期运行的 SQL Server 代理添加一个作业(我的运行在午夜),在该数据库上执行以下步骤:
dbo.DeleteExpiredSessions

这可以确保 session 到期时,即使创建它们的进程不存在,它们也会消失。如果您想在重新启动进程时摆脱它们,只需执行:
DELETE [ASPState].dbo.ASPStatsTempSessions

这将删除数据库中的所有 session 。

关于asp.net - 如何回收存储在 SQL Server 中的 ASP.NET session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8806125/

相关文章:

asp.net - DotNetOpenAuth 和 FormsAuthentication

c# - 如何在此 asp.NET web api 方法中检索 Ajax header ?

c# - HttpWebRequest 调用页面两次

asp.net - 防止 ASP.NET 重定向到 login.aspx

c# - Jquery 在客户端对 gridview 列进行排序

c# - 如何通过 PayPal IPN 传递自定义数据

c# - asp.net网站如何集成Paypal支付网关

sql - 在 SQL 语句中使用 user.identity.Name

c# - 使用 Share API 发布到 LinkedIn

asp.net - 防止回发时关闭 ModalPopup