2013-12-13 175 views
0

我有一個網站,並在登錄頁面Page_Load,清除Session。我已經試過:ASP.net會話清除

Session.Clear() 
Session.RemoveAll() 
Session.Abandon() 

然後,一旦登錄頁面填寫並點擊提交按鈕,它然後將兩個值:

Session.Add("ref", ref) 
Session.Add("date", datetxt) 

在接下來的頁面中,我有一個,如果聲明成立:

If Session.Item("ref") = Nothing Then 
    Response.Redirect("Login.aspx") 
End If 

然而,當它只是不斷重新導向到登錄,而不必加載,即使我已經加入會話「參考」價值。

你能幫忙嗎?

+0

我嘗試了四個空格縮進代碼,但它沒有奏效,對不起。 – Dan

+3

是否在頁面加載中添加了ispostback檢查。 – Raghubar

+0

您是否試圖在允許用戶訪問給定頁面之前驗證用戶已經登錄? –

回答

0

修改您的OnLoad代碼只能清除會話時登錄頁面被稱爲首次,回發:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    If Not IsPostback Then 
     Session.RemoveAll() 
     Session.Clear() 
     Session.Abandon() 
    End If 
End Sub 

你被拋棄每一個會話,包括一個你只是寫了登錄數據。噹噹前頁面被卸載時(已完成處理),放棄發生。

+0

它的工作。感謝您的解釋!我認爲Session.Abandon()會在加載頁面的時候發生。現在它工作得很好。 – Dan

0

對您的Login.aspx頁面代碼稍作修改,並清除ispostback方面的所有會話變量。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    If Not IsPostback Then 
     Session.RemoveAll() 
     Session.Clear() 
     Session.Abandon() 
    End If 
    End Sub