Global.asax 中的 Session_OnEnd 重定向到控制器动作 MVC ASP.NET

fel*_*dwe 3 c# asp.net asp.net-mvc

我想在会话过期后优雅地重定向到动作控制器。在我的 Global.asax 文件中添加了 Session_OnEnd 方法。见下面的代码:

全球.asax:

public void Session_OnEnd()
{
    //redirect to controller action here
}
Run Code Online (Sandbox Code Playgroud)

起初我在方法中有“Response.RedirectToRoute”,但抛出异常并且在技术上无法工作。

Moh*_*our 5

你不能这样做。Session_End 可以在没有实际 HTTP 上下文的情况下被触发。用户甚至可能在此事件触发之前很久就关闭了他的浏览器,因此无处可重定向。请求和响应对象不可用。

但是您可以创建自定义 ActionFilter 来处理此问题。

在 MVC4 中的 Global.asax 中的会话超时时重定向

检测 ASP.NET MVC 上的会话过期

使用 ASP.Net MVC 操作过滤器检测会话超时