2008-10-14 57 views
3

在我们正在构建的网站上。当他的会话结束时,我们需要能够将用户重定向到默认页面。什么是处理与ASP.NET 2.0过期会话的最有效方式

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

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

但它产生响应的crapload不可用在这方面错误。当然,我们不希望垃圾邮件我们的服务器错误日志。

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

回答

2

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

2

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

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

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

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:在我们的全球文件的.asax第一行是:

<%@ Application Inherits="???.Global" Language="C#" %>