Очистка сессии в ASP.NET

Я новый разработчик, и мне было поручено выяснить, почему наша функция выхода из системы не работает. Я перепробовал все возможные методы, которые смог найти. Ниже приведен журнал, который я сохранил, который включает методы, которые я использовал.

  1. добавлена кнопка выхода из CommonHeader.ascx и форма

  2. пробовал множество методов выхода.аспн.форма vb, чтобы завершить или очистить сеанс, но ни один из них работа.

а. ClearSession процедуру Sub определенными в выход.аспн.форма глаг:

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

b. Также добавил Это в верхней части подпрограммы page_load sub:

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

c. Также изменена подпрограмма clearsession на Session.Contents.Remove("Variable") С Session("Variable") = ""

ни один из этих методов работы. Мы используем siteminder, которые, и мне было интересно, является ли это корнем проблемы. Я просто не могу найти ничего на очистке сеанса, который использует siteminder, которые. Также имейте в виду, что это приложение закодировано с помощью Visual Studio 2003.

это код для кнопки, которую я использую в файле ascx:

athp: TopNavText Title=" выход из системы "NavigateUrl=" выход из системы.аспн" целевых="соответствующим образом"/

затем на "выход.форма "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

5 ответов


наконец-то понял решение, я изначально не определял домен при удалении cookie, который содержал идентификатор сеанса siteminder. Код, который я использовал, выглядит следующим образом:

        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(). Это похоже на вашу проблему, они говорят, что это ошибка с .NET, и как ваше использование 1.1 это звучит отчетливо возможно.


Привет друг, пожалуйста, добавьте событие щелчка кнопки в пользовательском управлении. И в случае щелчка добавьте следующий код и удалите весь другой код.

Сессии("Переменная") = "";


смотреть на этот пост

C# Очистить Сеанс

применяются ли его C sharp или vb те же правила. Вы вызываете сеанс abandon затем clear, но к тому времени, когда вы вызываете clear, сеанс все равно должен уйти.

Clear сохраняет состояние сеанса вместе с объектами в нем, поэтому, вызывая его после отказа, вы можете фактически повторно инициализировать сеанс для пользователя, но с очищенными переменными.

см. этот пост для заказ и правильный способ убить сеанс и перенаправить на страницу входа в систему, если у вас есть один

FormsAuthentication.SignOut () не выходит из системы


первое, что следует отметить, что если вы используете проверку подлинности форм, сеанс не имеет абсолютно никакого отношения к тому, вошел ли пользователь в систему.

вызов FormsAuthentication.В файле signout удалит данные билета проверки подлинности форм из файла cookie или URL-адреса, если CookiesSupported имеет значение false.

но это не повлияет на то, что хранится в сеансе.

обновление

Почему вы думаете, что выйдите (Метод formsauthentication.SignOut) не работает? Что вы ожидаете, когда вы нажмете на выход, и что именно происходит на самом деле?

Я бы избавился от всего кода, чтобы очистить сеанс и посмотреть на это. Например, посмотрите на HTTP-трафика с помощью такого инструмента, как Саша: вы должны иметь возможность видеть, что файл cookie FormsAUthentication удаляется при нажатии на выход из системы.