我想在当前会话结束时重定向到登录,并且该配置必须在任何查看和控制器下工作。
我在 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");
}
答案 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所描述的情况。我想在登录过程中分配一些虚拟会话变量会解决这个问题,尽管我还没有尝试过。