2008-10-14 43 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#" %> 
相關問題