无法使 ASP.Net Web 窗体应用程序超时

Cannot get ASP.Net Web Forms application to timeout

我正在开发 ASP.Net Web 表单应用程序。

我希望网站在一段时间后超时,这应该很简单,但是,我似乎无法按预期实现这一点。

我已经尝试更改 web.config 以及 IIS 中的超时设置。我处于 SQL 服务器会话模式。

在 Global.asax 文件的 Session_End 函数中编写的代码永远不会执行,无论我使用什么超时设置。

检查 SQL 服务器中的会话 cookie 和 ASPStateTempSessions table 表明我在 web.config 中更改的设置确实更改了会话的超时值,但是,那里从来没有任何迹象表明该网站实际上正在超时。

我不知道还有什么地方可以寻找超时设置,或者是什么阻止了我生成超时。

进程外会话状态不会导致 Session_End 触发,只会触发进程内,如对此问题的回答中所述 - Why Session_End event not raised when StateProvider is not InProc?

如果您在使用 SQL 或状态服务器会话提供程序时(例如)20 分钟不活动后需要执行某些操作,则需要创建自己的机制。上面的问题中有一个 link 解释了如何做到这一点 - http://www.codeproject.com/KB/aspnet/SessionEndStatePersister.aspx