Как проверить, если сессия asp действительна? - PullRequest
0 голосов
/ 29 августа 2009

Я использую сеанс outproc, который управляется aspnet_state. Иногда я получаю ошибки во время выполнения, говоря, что сессия недействительна. Поэтому я хотел проверить, является ли сеанс действительным для каждого запроса, который я делаю. Но я не смог найти правильный способ сделать это, как в этом Вопросе с использованием Java.

Вот код, который я сейчас использую в событии page_preinit. Это выглядит ужасно, но работает.

            Try
                Dim x = Session.Keys().Item(0)
            Catch ex As Exception
                Session.Clear()
            End Try

Кто-нибудь знает лучший подход?

Спасибо

Ответы [ 3 ]

1 голос
/ 29 августа 2009

Вы можете попробовать проверить объект контекста.

C #

if(Context.Session != null)
{
    //Redirect to login page etc
}

VB (здесь используется преобразователь C # в VB .. не уверен, что это правильно)

If Context.Session IsNot Nothing Then
    'Redirect to login page etc
End If

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

0 голосов
/ 12 ноября 2009

Просто проверьте Session.Count вместо попытки доступа к первому элементу в блоке обработки ошибок ...

0 голосов
/ 21 октября 2009

На самом деле я решил проблему, проверив первый элемент сеанса (session.item (0)) Я поместил код в try catch. если есть исключение, я просто очищаю сессию. Этот код находится на базовой странице для всех моих страниц.

так что в preinit-событии мой код выглядит следующим образом

Private Sub Page_PreInit(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreInit
    Try
        Dim x = Session.Keys().Item(0)
    Catch ex As Exception
        Session.Clear()
    End Try
End Sub

Это кажется уродливым, но это решает мою проблему.

Спасибо всем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...