会话结束时如何从Global.asax重定向到login.aspx页面

时间:2016-08-08 14:57:03

标签: javascript c# asp.net

我正在开发一个asp.net C#webforms项目。我想在会话到期时重定向到login.aspx页面。我在互联网上提供基于javascript的解决方案,工作正常。但是我希望它可以在global.asax页面上运行,这样代码就可以放在一个地方。我尝试从Global.asax上的Session_End事件重定向,但没有工作,因为此事件没有可用的Response和Request对象。有些引用使用了Redirecting to another page on Session_end event中的Application_AcquireRequestState事件,但它也没有用。非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:1)

自从我生活在.NET世界以来已经有一段时间了,但据我所知,Session_End在没有任何请求触发的情况下在服务器上触发。换句话说,当会话到期时,Session_End将会触发。那时你不会有请求。

此外,如果您需要转移到外部会话,Session_End将无法启动:

https://blogs.msdn.microsoft.com/amb/2011/06/03/session_onend-or-session_end-events-in-global-asax-wont-fire-if-you-store-asp-net-sessions-out-of-proc-in-state-server-or-sql-server/

因此,您可能不想首先依赖Session_End

由于您没有请求,因此无法从服务器进行重定向。您在JavaScript中执行此操作。但是,如果确实需要服务器将重定向“推送”到任何连接的客户端,则可以使用WebSockets来完成此任务。 (不过我认为这不是一个坏主意。)