ASP.NET Session не хранится на разных страницах - PullRequest
0 голосов
/ 05 августа 2009

Сначала я создал страницу входа в систему, которая добавила пару ключ-значение в сеанс, и проверила, что на этой странице сеанс содержит эту пару. Затем я пытаюсь перейти на другую страницу, которая ищет эту пару в сеансе, а ее там нет. Я установил таймаут для сессии до 15000, чтобы он не истекал. В настоящее время я использую статический класс для просмотра сессии, HttpContext.Current.Session. Каждая страница вызывает этот статический класс для просмотра сеанса, но каждый раз, когда счетчик ключа сеанса = 0, за исключением того, что после пары на странице входа в систему.

public static class UserAuthenticationManager
{
    public static bool IsAuthenticated()
    {
        UserAuthenticationTicket ticket = ((UserAuthenticationTicket)HttpContext.Current.Session[DefinesPL.UserTicketSessionName]);

        string redirectUrl = String.Format(DefinesPL.LoginPage);

        if (ticket != null)
        {
            if (ticket.IsExpired())
            {
                HttpContext.Current.Session.Abandon();
                HttpContext.Current.Response.Redirect(redirectUrl, true);
            }
        }
        else
        {
            HttpContext.Current.Session.Abandon();
            HttpContext.Current.Response.Redirect(redirectUrl, true);
        }

        return true;
    }

Ответы [ 2 ]

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

Самая распространенная причина - отключение файлов cookie. Вам понадобятся файлы cookie или перейдите на модель сеанса без cookie , с которой немного сложнее работать.

0 голосов
/ 05 августа 2009

Возможно, вам также понадобится добавить Global.asax в ваш проект. Мне кажется, я сталкивался с этим раньше, когда для каждого HTTP-запроса создавался новый сеанс.

...