Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ASP.NET Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4 5 6 7 8 9 10 .. 12   вперед  Ctrl      все
 Как восстановить сессию  [new]
ilshatkin
Member

Откуда:
Сообщений: 140
Добрый день!

Сейчас после авторизации данные пользователя и подключения к бд записываются в сессию. Но по истечению определенного времени сессия истекает и на данный момент, если пользователь хочет сделать какое-либо действие, в Page_PreInit проверяю HttpContext.Current.Session["ConnectionStrings"] и если она не определена , то делается редирект на страницу авторизации.

Хотелось бы сделать лучше, а именно чтобы происходил не редирект, а показать окно авторизации, где бы пользователь внес свои данные и продолжил работу.

Пробовал так, но это не работает, появляется окно "Status Code: 200 Status Text: NORESPONSE", а окно ReloginWindow не открывается
 if (HttpContext.Current.Session["ConnectionStrings"] == null)
        { 
            this.ReloginWindow.Show();
            this.ReloginWindow.Call("body.highlight");
            this.Response.End();
        }


Можно ли как то приостановить или корректно завершить запрос Page_PreInit или нужно раньше делать проверку?
Посоветуйте, пожалуйста, как бы вы сделали это?
28 дек 17, 15:14    [21070041]     Ответить | Цитировать Сообщить модератору
 Re: Как восстановить сессию  [new]
hVostt
Member

Откуда:
Сообщений: 14560
ilshatkin,

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

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

вообще, чтобы избежать подобных проблем, либо не использовать сессию вообще по возможности, либо не использовать для чувствительных для работы пользователя данных, храните их в БД
29 дек 17, 07:47    [21071588]     Ответить | Цитировать Сообщить модератору
 Re: Как восстановить сессию  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 34394
hVostt,
Не может быть чтобы не было вариантов. Это же неудобно.
Я таких сайтов уже лет 5 не видел.
Работает с Core вариант?:
options.IdleTimeout = TimeSpan.FromSeconds(10);

Кроме того, по умолчанию таймаут сессии 20 мин. Но максимум параметра 1 год!
Это значит юзверь должен тупо смотреть 20 мин на экран и ничего не делать.
29 дек 17, 11:57    [21072252]     Ответить | Цитировать Сообщить модератору
 Re: Как восстановить сессию  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 25277
Вот хороший вариант:

  <system.web>
    <sessionState mode="Off" />
    <httpModules>
      <remove name="Session" />
    </httpModules>

29 дек 17, 12:08    [21072303]     Ответить | Цитировать Сообщить модератору
 Re: Как восстановить сессию  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 34394
skyANA,
Ну, это лечение головной боли гильотиной
29 дек 17, 12:20    [21072338]     Ответить | Цитировать Сообщить модератору
 Re: Как восстановить сессию  [new]
hVostt
Member

Откуда:
Сообщений: 14560
Petro123
Не может быть чтобы не было вариантов. Это же неудобно.


варианты прострелить себе ногу есть всегда
и хорошо, если ногу
29 дек 17, 15:22    [21072966]     Ответить | Цитировать Сообщить модератору
 Re: Как восстановить сессию  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 25277
Petro123
skyANA,
Ну, это лечение головной боли гильотиной
А ведь верно подмечено.

Session - это головная боль. Зачем её лечить, если можно просто избавиться?
29 дек 17, 15:42    [21073001]     Ответить | Цитировать Сообщить модератору
 Re: Как восстановить сессию  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 25277
ilshatkin
Посоветуйте, пожалуйста, как бы вы сделали это?
Редирект на страницу логина с парамтрами куда возвращаться после входа.
29 дек 17, 15:49    [21073017]     Ответить | Цитировать Сообщить модератору
 Re: Как восстановить сессию  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 25277
В случае FormsAuthentication параметр называется ReturnUrl.
29 дек 17, 15:53    [21073027]     Ответить | Цитировать Сообщить модератору
 Re: Как восстановить сессию  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 34394
hVostt
Petro123
Не может быть чтобы не было вариантов. Это же неудобно.


варианты прострелить себе ногу есть всегда
и хорошо, если ногу

Профи все фичи использует аккуратно и к месту)). Даже если нужно что то положить в сессию.
29 дек 17, 17:43    [21073272]     Ответить | Цитировать Сообщить модератору
 Re: Как восстановить сессию  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 34394
skyANA
Session - это головная боль.
-1
Все используют, а в шарпе головная боль.
29 дек 17, 17:44    [21073275]     Ответить | Цитировать Сообщить модератору
 Re: Как восстановить сессию  [new]
ilshatkin
Member

Откуда:
Сообщений: 140
Спасибо ребята что откликнулись. В итоге накостылял, получилось не идеально но терпимо на первое время.

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

Сессию можно назвать не восстанавливаю, а делаю новую и продолжаю на нем работать дальше.

Веб-приложение на web forms с ext.net.

Сделал доп. модальное окно для авторизации внутри приложения и если происходит запрос на сервер и обнаруживается что сессия истекла, то это окно показывается, а отправленный запрос просто возвращает null. Далее если вводится верный пароль, то создается новая сессия и работаем на ней. Сейчас не идеально то что по идее нужно было бы повторно запустить тот неудачный запрос автоматом и завершить действия, но пока это не стал делать, то есть человек должен повторно инициировать сове действие.
29 дек 17, 21:03    [21073538]     Ответить | Цитировать Сообщить модератору
 Re: Как восстановить сессию  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 34394
ilshatkin
делаю новую и продолжаю на нем работать дальше.

а это поднять повыше не пробовал?
Куча отзывов что этот параметр не работает:
<sessionState timeout="8-ми часовой рабочий день" ... />
29 дек 17, 21:53    [21073584]     Ответить | Цитировать Сообщить модератору
 Re: Как восстановить сессию  [new]
ilshatkin
Member

Откуда:
Сообщений: 140
Petro123,

пробовал, сейчас стоит <sessionState timeout="10000" />
29 дек 17, 22:02    [21073598]     Ответить | Цитировать Сообщить модератору
 Re: Как восстановить сессию  [new]
hVostt
Member

Откуда:
Сообщений: 14560
Petro123
Профи все фичи использует аккуратно и к месту)). Даже если нужно что то положить в сессию.


профи не используют все фичи только потому что они есть
29 дек 17, 22:13    [21073622]     Ответить | Цитировать Сообщить модератору
 Re: Как восстановить сессию  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 34394
OFF
hVostt
профи не используют все фичи только потому что они есть

тут важна линейка решений от простого к сложному.
Допустим есть другой ТС и нужна сессия для хранения 2-х, 3-х атрибутов из полей при переходе по страничкам.
Твои действия?
29 дек 17, 22:41    [21073686]     Ответить | Цитировать Сообщить модератору
 Re: Как восстановить сессию  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 34394
ilshatkin
Petro123,
пробовал, сейчас стоит <sessionState timeout="10000" />

OK. Странно что все говорят, что параметр нерабочий).
29 дек 17, 22:43    [21073689]     Ответить | Цитировать Сообщить модератору
 Re: Как восстановить сессию  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 25277
ilshatkin
Здесь специфика в том что это веб-приложение для ведения учета и если в нем работать, то он может стоять открытым долгое время без каких либо действий и по возвращению хотелось бы не терять открытые окна и тому подобное из-за редиректа на страницу авторизации.
Замечу, что это прекрасно реализуется без использования Session.
29 дек 17, 22:44    [21073691]     Ответить | Цитировать Сообщить модератору
 Re: Как восстановить сессию  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 25277
Petro123
skyANA
Session - это головная боль.
-1
Все используют, а в шарпе головная боль.
Думаю редко какое высоконагруженное приложение на шарпе использует Session
29 дек 17, 22:48    [21073701]     Ответить | Цитировать Сообщить модератору
 Re: Как восстановить сессию  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 34394
skyANA
высоконагруженное приложение

это очень расплывчатое понятие.
29 дек 17, 23:15    [21073748]     Ответить | Цитировать Сообщить модератору
 Re: Как восстановить сессию  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 25277
ilshatkin, раз Вы используете Session, то Вам будет полезно знать,
что по умолчанию запросы в рамках одной сессии обрабатываются последовательно.

15 лет назад это не было проблемой, но сейчас,
когда с одной страницы зачастую посылается множество AJAX запросов,
когда пользователи открывают сразу несколько вкладок в браузере для одного приложения,
на ровном месте получаем узкое место и проблемы производительности на стороне клиента.

А всё по тому, что по умолчанию Session в начале запроса блокируется до его окончания.
29 дек 17, 23:20    [21073761]     Ответить | Цитировать Сообщить модератору
 Re: Как восстановить сессию  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 25277
Petro123
skyANA
высоконагруженное приложение

это очень расплывчатое понятие.
Тебя не это должно интересовать, а связанные с использованием Session проблемы
29 дек 17, 23:27    [21073785]     Ответить | Цитировать Сообщить модератору
 Re: Как восстановить сессию  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 34394
skyANA
ilshatkin, раз Вы используете Session, то Вам будет полезно знать,
что по умолчанию запросы в рамках одной сессии обрабатываются последовательно.

15 лет назад это не было проблемой, но сейчас,
когда с одной страницы зачастую посылается множество AJAX запросов,
когда пользователи открывают сразу несколько вкладок в браузере для одного приложения,
на ровном месте получаем узкое место и проблемы производительности на стороне клиента.

А всё по тому, что по умолчанию Session в начале запроса блокируется до его окончания.

браузер имеет ограничение на количество соединений с сервером (для параллельности).
Давай его как и сессию запретим или выкинем).
Фигня это всё.
Надо писать так, чтобы один запрос занимал время 15 миллисек.
Мы же не одноклассники пишем.
Пусть ТС сначала с формс на Core перейдёт).
Удачи ему!
29 дек 17, 23:51    [21073837]     Ответить | Цитировать Сообщить модератору
 Re: Как восстановить сессию  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 34394
skyANA
а связанные с использованием Session проблемы

профи тут любят так отвечать: "с сессией нет проблем".
Вот с параметром сессии таймаутом надо разобраться.
29 дек 17, 23:53    [21073842]     Ответить | Цитировать Сообщить модератору
 Re: Как восстановить сессию  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 25277
Petro123,

молодец, так держать! Фигня всё это, не зачем разбираться как оно работает и какие могут быть проблемы
29 дек 17, 23:59    [21073848]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4 5 6 7 8 9 10 .. 12   вперед  Ctrl      все
Все форумы / ASP.NET Ответить