我正在尝试实现一个选项,当用户超时时,在他再次登录后,他被重定向到他所在的上一页。我似乎遇到的问题是我无法获得会话结束时页面的URL。 我试过像:
protected void Session_end(object sender, EventArgs e)
{
string userUrl = Request.Url.AbsoluteUri;
Application["userUrl"] = userUrl;
}
并在会话开始时检查网址是否存在并重定向到它。
protected void Session_Start(object sender, EventArgs e)
{
try
{
string userUrl = Application["userUrl"].ToString();
}
catch
{}
}
我得到的错误是'请求在此上下文中不可用'在string userUrl = Request.Url.AbsoluteUri;
。任何人都可以解释一下我做错了什么?
答案 0 :(得分:0)
在每个页面加载中,您应该将用户名和URL存储在某个持久性存储中。然后,当新会话开始查找用户名的URL并将客户端重定向到此页面时。
答案 1 :(得分:0)
在Session_End()中,如果要访问Request对象,需要通过HttpContext.Current.Request访问它
但据我所知,如果您使用表单身份验证,当会话结束时,默认情况下,FormAuthenticationModule会将您重定向到登录页面,其中returnUrl作为url中的查询字符串。在登录页面中,您只需检查该参数,并在身份验证成功后执行重定向。