Session 使用ASP.NET 2.0处理已过期会话的最有效方法是什么

Session 使用ASP.NET 2.0处理已过期会话的最有效方法是什么,session,asp.net-2.0,Session,Asp.net 2.0,在我们正在建造的场地上。我们需要能够在用户会话结束时将其重定向到默认页面 乍一看,我们在会话结束时使用了一个响应。重定向来完成这项工作 Sub Session_End(ByVal sender As Object, ByVal e As EventArgs) Response.Redirect("~/global/exit.aspx") End Sub 但它会生成大量的响应,这些响应在此上下文中不可用。当然,我们不想垃圾邮件我们的服务器错误日志 使用ASP.NET 2.0处理会话结束的

在我们正在建造的场地上。我们需要能够在用户会话结束时将其重定向到默认页面

乍一看,我们在会话结束时使用了一个响应。重定向来完成这项工作

Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
    Response.Redirect("~/global/exit.aspx")
End Sub
但它会生成大量的响应,这些响应在此上下文中不可用。当然,我们不想垃圾邮件我们的服务器错误日志


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

我们通过检查应用程序中是否存在会话数据来处理。开始请求特定于用户的页面,如果没有,则将用户重定向到登录或主页。

您可以使用会话结束方法,因为它不是用户可调用的方法,它由ASP.NET触发,响应不可用,因为它不是请求的一部分

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


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

我们在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#" %>