3

在我们正在建设的网站上。当他的会话结束时,我们需要能够将用户重定向到默认页面。

乍一看,我们使用 Session_End 和 Response.Redirect 来完成这项工作。

Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
    Response.Redirect("~/global/exit.aspx")
End Sub

但它会生成大量Response is not available in this context错误。自然,我们不想向我们的服务器错误日志发送垃圾邮件。

处理以 ASP.NET 2.0 结束的会话的最有效方法是什么?

4

3 回答 3

3

我们将以下代码添加到 global.asax.cs 文件中:

 private void IsAuthenticated()
    {
        string vFileName = Path.GetFileName(HttpContext.Current.Request.Path);
        string vExt = Path.GetExtension(vFileName).ToLower();
        if ((vFileName != "Login.aspx") && (vExt == ".aspx"))
        {
            if (HttpContext.Current.Session["LoggedIn"] == null)
            {
                HttpContext.Current.Response.Redirect("~/Login.aspx");
            }
        }
    }
    void Application_PostAcquireRequestState(object sender, EventArgs e)
    {
        IsAuthenticated();
    } 

NS:我们的 Global .asax 文件的第一行是:

<%@ Application  Inherits="???.Global" Language="C#" %>
于 2008-10-15T07:31:50.473 回答
2

我们通过检查会话数据是否存在于特定于用户的页面的 Application.Begin_Request 中来处理它,如果不存在则将用户重定向到登录或主页。

于 2008-10-14T14:31:49.487 回答
2

您可以使用 session_end 方法,因为它不是用户可调用的方法,它由 ASP.NET 触发并且响应不可用,因为它不是请求的一部分。

最大的方法是检查并查看会话是否丢失,在页面加载的某个地方并重定向回主页面。

我之前所做的是将此检查逻辑放在用于所有会话特定页面的“RestrictedPage.master”母版页中,如果会话丢失,它会重定向。

于 2008-10-14T15:39:16.090 回答