所以我们刚刚开始使用存储在 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/