簡體   English   中英

清除ASP.NET中的會話

[英]Clearing a session in ASP.NET

我是一名新開發人員,我被分配了解決我們的注銷功能無法正常工作的任務。 我已經嘗試了所有可以找到的方法。 下面是我保留的日志,其中包括我使用過的方法。

  1. 在CommonHeader.ascx表單中添加了一個注銷按鈕

  2. 已經在logout.aspx.vb表單中嘗試了許多方法來使其結束或清除會話,但它們都不起作用。

一種。 logout.aspx.vb形式中定義的ClearSession子例程:

Session("Variable") = ""
FormsAuthentication.SignOut()
Session.RemoveAll()
Session.Abandon()
Session.Clear()

還將其添加到Page_Load子例程的頂部:

HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache)
HttpContext.Current.Response.Cache.SetNoServerCaching()
HttpContext.Current.Response.Cache.SetNoStore()

C。 還將ClearSession子例程從Session("Variable") = ""更改為Session.Contents.Remove("Variable")

這些方法都不起作用。 我們使用Siteminder ,我一直想知道這是否是問題的根源。 我在清除使用Siteminder的會話時找不到任何內容。 另請注意,此應用程序使用Visual Studio 2003編碼。

這是我在ascx文件中使用的按鈕的代碼:

athp:TopNavText Title =“Log Out”NavigateUrl =“logout.aspx”Target =“_ top”/

然后在“logout.aspx”表單上,我嘗試使用上述方法之一或每種方法的組合。 這是我觸摸它之前的代碼:

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load  

     ClearSession() 
     Response.Redirect("login.aspx") 

End Sub 

Public Sub ClearSession() 

     Session("Variable") = "" 

End Sub

最后想出了解決方案,我最初沒有在刪除包含siteminder會話ID的cookie時定義域。 我使用的代碼如下:

        Dim cookie3 As HttpCookie = New HttpCookie("SMSESSION", "NO")
        cookie3.Expires = DateTime.Now.AddYears(-1)
        cookie3.Domain = ".domain.com"
        Response.Cookies.Add(cookie3)

        Response.Redirect("login.aspx")

這個問題: formsauthentication-signout-does-not-log-the-user-out描述了即使在調用FormsAuthentication.SignOut()之后也沒有清除cookie的問題。 這聽起來像你的問題,他們說它是.NET的一個錯誤,而你的使用1.1這聽起來很明顯。

嗨朋友請在用戶控件中添加按鈕的點擊事件。 在點擊事件中,請添加以下代碼並刪除所有其他代碼。

會話(“變量”)=“”;

看看這篇文章

C#清除會話

無論是c sharp還是vb相同的規則仍然適用。 您正在調用會話放棄然后清除,但是當您打電話清除時,會話應該已經消失。

Clear將會話狀態與其中的對象保持在一起,因此通過在放棄后調用它實際上可以為用戶重新初始化會話,但使用已清除的變量。

查看此帖子,了解訂單以及殺死會話的正確方法,如果有的話,還可以重定向到登錄頁面

FormsAuthentication.SignOut()不會將用戶注銷

首先要注意的是,如果您使用的是表單身份驗證,則Session與用戶是否登錄完全無關。

如果CookiesSupported為false,則調用FormsAuthentication.SignOut將從cookie或URL中刪除表單身份驗證票證信息。

但它對Session中存儲的內容沒有影響。

UPDATE

為什么你認為注銷(FormsAuthentication.SignOut)不起作用? 當您單擊“注銷”時,您期望發生什么?實際發生了什么?

我將擺脫清除Session的所有代碼並查看它。 例如,使用Fiddler等工具查看http流量:您應該能夠看到單擊“注銷”時刪除了FormsAU身份驗證cookie。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM