我正在尝试在会话结束时将用户重定向到另一个页面。
此代码将导致“对象引用未设置为对象的实例”。例外
void Session_End(Object sender, EventArgs E)
{
HttpContext.Current.Response.Redirect("/");
}
任何想法怎么做?
答案 0 :(得分:1)
Session_End
。因此,当发生这种情况时,没有关联HttpRequest
。这就是为什么Response.Redirect
或Server.Transfer
没有意义且不起作用的原因。
我在过去的变通方法中看到但从未尝试过,你应该创建每个页面都继承的Base类。基类中的OnInit
添加此项。基类继承UI.Page
。 如果你不使用基类逻辑,你应该把这个逻辑添加到每个不好的页面。
protected override void OnInit(System.EventArgs e)
{
Response.AddHeader("Refresh",Convert.ToString((Session.Timeout * 60) + 5));
if(Session.IsNewSession)
Response.Redirect(“Logout.aspx”);// or another page which you want.
}
一旦会话过期,页面应在5秒后刷新,如果你发现会话是新的,你将重定向。