会话结束并重新登录后,将用户重定向到他上次访问过的页面

时间:2015-09-03 08:25:06

标签: c# asp.net session

我正在尝试实现一个选项,当用户超时时,在他再次登录后,他被重定向到他所在的上一页。我似乎遇到的问题是我无法获得会话结束时页面的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; 。任何人都可以解释一下我做错了什么?

2 个答案:

答案 0 :(得分:0)

在每个页面加载中,您应该将用户名和URL存储在某个持久性存储中。然后,当新会话开始查找用户名的URL并将客户端重定向到此页面时。

答案 1 :(得分:0)

在Session_End()中,如果要访问Request对象,需要通过HttpContext.Current.Request访问它

但据我所知,如果您使用表单身份验证,当会话结束时,默认情况下,FormAuthenticationModule会将您重定向到登录页面,其中returnUrl作为url中的查询字符串。在登录页面中,您只需检查该参数,并在身份验证成功后执行重定向。