在ASP.Net MVC中会话结束时页面重定向

时间:2010-04-03 04:07:36

标签: asp.net-mvc

我想在当前会话结束时重定向到登录,并且该配置必须在任何查看控制器下工作。

我在 Global.asax 中的当前代码:

protected void Session_End(object sender, EventArgs e)
{            
     Session.Abandon();
     //GetPath() is getting currently path
     // eg. http://localhost/mymvcproject
     Response.Redirect(PATH.GetPath() + "User/LogOn");
}

2 个答案:

答案 0 :(得分:2)

检查< system.web>下的以下设置。在您的web.config文件中:

<sessionState mode="InProc" cookieless="false" timeout="1"></sessionState>

然后在您的site.Master中填写以下文字

if (Session.IsNewSession)
{
    Response.Redirect(PATH.GetPath() + "User/LogOn");
}

答案 1 :(得分:0)

我不认为您的代码可以正常工作,因为当特定持续时间后浏览器没有请求时,通常会调用Session_End()。因此,这里Response对应没有特定请求,因此没有重定向。

相反,请尝试处理Application_Start并检查Session.IsNew属性。如果是true,则执行重定向。 (考虑通过调用FormsAuthentication.RedirectToLoginPage()来做到这一点。)

检查IsNew时,请注意here所描述的情况。我想在登录过程中分配一些虚拟会话变量会解决这个问题,尽管我还没有尝试过。