powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Грамотная обработка таймаута сессии
35 сообщений из 35, показаны все 2 страниц
Грамотная обработка таймаута сессии
    #33226927
Orion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите как грамотно обработать таймаут сессии.
Приложение довольно навороченное на фреймах, с использованием MVC.
После долгого простоя отправляю постбэк, а код лезет за переменной сессии
и естественно её там уже нет.
Вобщем интересует больше стратегия "как это делается", чем строчки кода.
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33226970
Просто Лось
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я Вас правильно понял, то Вам нужен параметр файла web.config
Код: plaintext
1.
2.
    <sessionState 
            timeout="20" 
    />
Если нет, спрашивайте, удачи!
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33226983
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Незнаю, на сколько это верно, но, умные головы говорят - если тайм-ут сессии, предположим 20 мин - то можно вызывать рефреш страницы каждые 10 мин - сессия будет жить вечно, пока насильно её не закончишь...
Код: plaintext
<meta http-equiv=refresh content= 600 >
P.S. сам не пробовал - но выглядит - ЛОГИЧНО...
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33226995
Просто Лось
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vladgrigНезнаю, на сколько это верно, но, умные головы говорят - если тайм-ут сессии, предположим 20 мин - то можно вызывать рефреш страницы каждые 10 мин - сессия будет жить вечно, пока насильно её не закончишь...
Целиком и всеобъемльюще согласен, поддерживаю. Однако, здесь, на мой взгляд, имеет смысл рассмотреть уже политику безопасности.

ЗЫ да, кстате
Код: plaintext
timeout="20"
это в минутах.
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33227009
Orion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Просто ЛосьЕсли я Вас правильно понял, то Вам нужен параметр файла web.config
Нет.

У приложения уйма форм, мне что в каждый обработчик Load вставлять код проверки истечения сессии и перебрасывать клиента на стандартную страничку с отображением диалога мол сессия истекла требуется повторить вход. Либо наследовать класс от Page, там определить необходимую логику и наследовать все страницы от него.

Как правильно, как умные люди делают?

Потдерживать сессию не нужно иначе смысл от неё? Сервер должен освободить ресурсы, если клиент сорвался с места и пошёл с девушкой в ресторан...

Ребят, код рисовать не надо, мне словами, как это делается.
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33227010
Просто Лось
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Orion, а как Вы себе это представляете?

Cессия либо есть, либо ее нет. У сессии есть timeout, либо он истек, и сессии нет, либо он не истек, и сессия есть. Возможно также мы не поняли друг друга. Попробуйте в Global.asax.vb описать событие Session_End, возможно Вам нужно это?
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33227015
Orion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Допустим, я сессию закрыл по событию, дальше...
Пользователь пришёл со свидания и жмёт кнопарь на форме, генерируется постбэк...
Внутри страницы код лезет в ((MyClass)Session["ключ"]).MyFunc();
Опа... пустая ссылка на объект - исключение.
Результат - пользователь имеет плохое мнение о приложении видя исключение вместо сообщение о том что он слишком долго гулял и сервер закрыл его сессию.
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33227018
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Orion
не понятно, какой эффект требуется получить
что бы не было исключения, переменную сессии предварительно можно(вообщето нужно) проверять на null
данные каждого пользователя можно кэшировать в базе, и при пустых переменных сессии восстанавливать из базы
одним словом, вариантов может быть много, осталось выяснить - что конкретно необходимо..
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33227199
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
<OFF>
Необходимо как всегда:
"интелект компа" -ты ему говоришь, что пошёл в ресторан (больше чем на тайм-аут сессии) - он отвечает - "угу" - и продолжает ждать, поддерживая сессию, пока ты не вернёшься из ресторана...
P.S. Подождите лет 150 - получите интелектуальные машины ;) и, таких проблем не будет...
</OFF>
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33227252
Orion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
profil2Orion
не понятно, какой эффект требуется получить
что бы не было исключения, переменную сессии предварительно можно(вообщето нужно) проверять на null

Наверное я плохо объясняю. Либо есть решение до неприличия простое.

Негоже на каждой странице вставлять один и тотже код.
Я пока склоняюсь к написанию HttpModule для конвейера, чтобы ещё до страницы с формой отваживать юзера на прощальное сообщение.
Но чувствую что что-то не то.
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33227256
Orion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2vladgrig
Мне НЕ НАДО поддерживать сессию
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33227297
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторМне НЕ НАДО поддерживать сессию
Тогда вообще непонятно в чём грабли - есть блок Try..Catch..End Try (VB.NET к примеру)... Вот и оберни все свои постбэки этими блоками - отлавливай ошибку о пустом значении в переменной сессии и отправляй на страницу авторизации или там на страницу об извещении о конце сессии...
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33227326
Orion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну вобщем пришли к тому, что есть 2 варианта:

1.
ставим контроль состояния сессии где-то на этапах инициализации каждой страницы

2.
Перехватываем запрос модулем ещё до того как он добрался до страницы
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33227905
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНу вобщем пришли к тому, что есть 2 варианта:
1.
ставим контроль состояния сессии где-то на этапах инициализации каждой страницы
2.
Перехватываем запрос модулем ещё до того как он добрался до страницы
Нуу... Если Вы считаете, что это самое ГРАМОТНОЕ решение...
Советую, кстати, где-то на этапах инициализации каждой страницы поставить проверку наличия соединения с SQL и ряда других непредвиденных ошибок... А то, выпрыгнет подобная ошибка - и, результат - пользователь имеет плохое мнение о приложении видя исключение сервера...
Есть же специальные средства обработок ошибок, вот ими и надо обрабатывать - чего самим выписывать всё по новой...
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33229009
IAmSam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Here is my way to solve the problem.
I have class Base page (clsBasePage).
All pages in project inherit from clsBasePage. Where is not necessary to check anything on each page, it is enough to do it ones in clsBasePage but as each page inherits from clsBasePage. What is major idea.

About timeout. According to many articles I've been reading 1.0 ver has bug in that timeout mechanism and I've decided do not use session timeout at all. One my page in main frameset has following screept:
<script>
setTimeout('document.location=document.location' ,300000);
</script>
The page will be reloaded ones per 3 min.

I let user to make a decision when she/he is going to logout.

Thanks,
Vladimir
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33229039
Orion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vladgrig
Нуу... Если Вы считаете, что это самое ГРАМОТНОЕ решение...
Советую, кстати, где-то на этапах инициализации каждой страницы поставить проверку наличия соединения с SQL и ряда других непредвиденных ошибок...
Ну зачем так утрировать? У вас есть предложение лучше или вы просто так написали?

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

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

А чем вам не нравится второй вариант?
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33229116
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА чем вам не нравится второй вариант?
Лучше Вы мне объясните, чем Вам не нравиться вариант Try Catch End Try? Рассейте мои заблуждения...
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33229134
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По моему скромному IMHO, если уж так заботится о положительном впечатлении юзера от приложения, то надо пересмотреть сам подход к кешировании данных в сессии. Что я имею в виду.
Я предлагаю всю работу с данными, хранящимися внутри сессии, перенести в отдельный класс и работать только с ним (интерфейс можно сделать как и у Session). На событии Session_End сериализовать все данные, находящиеся там на текущий момент в постоянное хранилище (файлик, бд). Класс сделать singleton-ом, добывающим свой instance из текущей сессии и ложащий его туда в случае отсутствия (можно и просто Session_start обрабатывать). Внутри класса инкапсулировать всю логику проверки на наличие данных в сессии. При необходимости десериализовывать данные из постоянного хранилища. Предусмотреть различные стратегии сериализации-десериализации в зависимости от данных (к примеру, число можно и просто сохранить, а вот вместо датасета сохранить текст запроса к БД и получать его заново. Важные данные размещать в таблицах БД как часть основных данных приложения (та же самая корзина заказов из всех примеров :) )). В общем полный простор для полета фантазии :). И у юзера вообще не будет тогда проблем с протухшими сесиями. В любой (или почти в любой) момент времени он сможет продолжить работу с того места, где он остановился неделю назад.

Как идея?
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33229163
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот и я про то - ладно было бы необходимо продолжать сессию по истечению тайм-аута - согласен, немного проблематично, но решаемо...
Только автору нужно не это - а банальная обработка ошибки при отсутствии значения в переменной сессии с последующим редиректом на суперстраницу с уведомлением о том, что пользователь долго отсутствовал и его сессия закончилась - вот какая ОГРОМНАЯ проблема...
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33230131
Orion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Артем1 , вопрос не в том, чтобы поддержать сессию в случае краха приложения или ещё какой непредвиденной ситуации, для такого случая есть стандартный сервис Session State Server. Всего-то в web.config указать
Код: plaintext
1.
2.
3.
4.
5.
<configuration>
   <system.web>
      <sessionState mode="stateserver" stateConnectionString="tcpip=127.0.0.1:42424" />
   </system.web>
</configuration>
И ещё запустить сервис
c:\>net start aspnet_state

И ничего писать не надо.

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

2vladgrig А кто говорил что проблема ОГРОМНАЯ ?
Ищется грамотное и элегантное решение, а не геморой с обработкой исключений на каждой странице, а их десятки.

P.S. Просьба не воспринимать всё, что я пишу как давление на личнось, мы здесь обсуждаем варианты решения задачи.
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33230171
Просто Лось
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Позвольте я снова влезу с Global.asax. Если не хотите создавать обработчик исключений для каждой страницы, можете использовать Application_Error в вышеуказанном файле, где по коду обрабатывать возникшее исключение. Проще, мне кажется, некуда.
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33230277
Orion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Просто Лосьможете использовать Application_Error
Хм, если удастся опознать исключение ... очень сложно.

Есть идея, сейчас попробую, результат напишу ...
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33230720
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторИщется грамотное и элегантное решение, а не геморой с обработкой исключений на каждой странице, а их десятки.
да что вы зациклились на одной этой проблеме - да ещё и стараетесь найти для неё грамотное решение - подумайте о других исключениях которые могут выпрыгнуть, как будете с ними бороться - или вы конгениально соорудили ресурс, что проблема только в этом? Очень сомневаюсь... Бывают же ошибки - даже не зависящие от вас - и всё одно пользователь увидит окошко (если вы не сделаете своего ErrorPage) или не обработаете их подобающим образом. Так какой смысл заморачиваться на единице, когда решать надо для сотни (а для сотни есть стандартные средства о которых вам толкуют все участники топика). Кстати, ИМХО крутые вы программеры, если только после создания сотен страниц вспомнили об исключительных ситуациях и их обработке...
авторПросьба не воспринимать всё, что я пишу как давление на личнось, мы здесь обсуждаем варианты решения задачи.
Я надеюсь здесь все знают о том что идут дебаты а не ругань какая то... Так что и меня уж извините, если кого задеваю с пылу с жару...
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33230747
Orion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
:)
vladgrig
да что вы зациклились на одной этой проблеме

Один пишем, два в уме. Я пока пишу другие места, а это в голове крутится параллельно.
vladgrig
Бывают же ошибки - даже не зависящие от вас - и всё одно пользователь увидит окошко (если вы не сделаете своего ErrorPage) или не обработаете их подобающим образом.

Да не в этом же дело. Да сделаю я свою страницу для ошибок. Это фигня.
Я не могу нормально обработать завершение сессии. Ну не загорается у меня лампочка где лежать гениальные идеи ... :)
vladgrig
Кстати, ИМХО крутые вы программеры, если только после создания сотен страниц вспомнили об исключительных ситуациях и их обработке...

Да хоть 1000. Пока проект не пущен в эксплуатацию, делаю что хочу.
Я вообще во время разработки поймал таймаут сесси только 1 раз, когда чай пошёл пить. :) И вообще, вебморду с движком я один пишу, помочь мне не кому кроме интернета :(
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33230790
Orion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вобщем фигня такая:

(таймаут сессии выставил на 1 мин, глобально)

1.
Старт сессии (SessionID = 1234567)
записывается объект в сессию - SessionAppModel
дальше всё работает в нём

2.
Работа приложения
Какая-то страница добавляет дочернюю модель в
SessionAppModel.AddChild(myModel)
и от запроса к запросу с ней работает

3.
Открываю ту самую страницу

4.
жду 1 мин
вижу сработало Session_End, закрывается SessionID = 1234567

5.
Теперь жму на странице кнопку, дальше интересно.

6.
Срабатывает Session_Start и номер сессии тотже SessionID = 1234567
И естественно создается новый SessionAppModel без дочерних моделей

Дальше ошибка когда страница пытается получить доступ к несуществующей
дочерней модели
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33230831
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наверное лучше один раз увидеть чем сто раз услышать
Логин:public
Пароль:public
Тайм-аут 2 мин.
P.S. сильно не критикуй - ибо ради функционала, а не забавы для... Кстати, рад выслушать замечания о граблях ;)
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33230835
Orion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vladgrig наверное лучше один раз увидеть чем сто раз услышать
Логин:public
Пароль:public
Тайм-аут 2 мин.
P.S. сильно не критикуй - ибо ради функционала, а не забавы для... Кстати, рад выслушать замечания о граблях ;)

Ты думаешь, что я как-то смогу попасть на твой localhost ?
У меня уже голова кругом в
ASP.NET Community Starter Kit
ASP.NET Portal
Вообще сессию не пасут, в Community Starter Kit только в одном месте
Session[""] используется
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33230843
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33230862
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторУ меня уже голова кругом в
ASP.NET Community Starter Kit
ASP.NET Portal
Вообще сессию не пасут, в Community Starter Kit только в одном месте
Session[""] используется
я думаю всё это происходит потому что все эти люди читают литературу...
Учебный курс MCAD/MSCD Сертификационный экзамен 70-305 и 70-315 (Разработка Web-приложений на Microsoft Visual Basic .NET и Microsoft Visual C# .NET Официальное пособие Microsoft для самостоятельной подготовки Москва, 2003 стр.114-115)

Упорядочение доступа к переменным состояния
Переменные состояния Application и Session — мощное и потому опасное средство. Если использовать их бессистемно, проще простого наделать ошибок в коде, как часто бывало в старом Basic.
......
......
Во избежание подобных проблем следует упорядочивать доступ к переменным состояния Application и Session. Проще всего сделать это следующим образом. Для каждого необходимого элемента данных объявляются переменные на уровне страницы, затем при исполнении обработчика события Page_Load в них записываются значения переменных состояния Application и Session, а при исполнении обработчика события Page_UnIoad значения переменных, объявленных на уровне страницы, возвращаются в переменные состояния. Упорядоченное чтение и запись переменных состояния — полезный прием программирования, который рекомендуется взять на вооружение.
Следующий код иллюстрирует упорядоченный доступ к переменным состояния:
Visual Basic .NET
Public Class WebForrnl
' Объявить переменную на уровне страницы.
Dim strUname As String
Private Sub Page__Load(ByVal sender As System.Object.ByVal e As System.EventArgs) Handles MyBase.Load
'Получить значение переменной состояния.
strUname = Application("Uname")
'Присвоить значение.
strUname = "Wombat"
Использовать переменную.
Response.Write(mstrUname)
End Sub
Private Sub Page__Unload(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Unload
'Вернуть значение в переменную состояния
Application("Uname")=strUname
End Class
...
...
Внимание! В случае Visual C#, прежде чем вызывать любые методы переменной состояния, например ToString, обязательно убедитесь, что ее значение отлично от null, иначе вы получите ошибку времени выполнения из-за пустой переменной состояния.
Отключение переменных состояния Session
По умолчанию AS P. NET поддерживает переменную состояния Session для каждой страницы приложения. Если странице не нужна сеансовая переменная состояния, то для повышения производительности ее можно отключить.
Чтобы отключить переменную состояния Session для одной Web-формы:
• вызовите окно Web Form Properties для формы и установите EnableSession State как False.
Чтобы отключить переменные состояния Session во всем приложении:
• в файле Web.config установите для тега <sesstonstate mode> значение off:
<sessionstate mode="off">

P.S. От себя добавлю, что при таком методе наверное не так сложно в LoadPage отследить наличие переменных сессии или их отсутствие (даже на каждой странице ;) ) и, соответственно обработать происходящее надлежащим образом... Желаю удачи...
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33232271
Orion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ничего нового в вышесказанном нет, чтобы самому до этого дойти ума много не надо.
Остановим пока дебаты, пока я сам не сделаю то, что имел ввиду.
Напишу потом здесь.
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33232327
Orion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не совсем понял что я должен был увидеть в вашем примере.
Но танцующий котик под музыку - прикольно, только тяжеловато 100к для странички.
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33232537
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле, (лично мне) всё ясно... Вы всё умеете и всё уже знаете... И книги для вас не авторитет, и мнения так себе... Непонятно одно, - к чему тогда вообще весь этот фарс с вопросами о грамотной обработке!!!!????
P.S. Про тяжесть котика - на скорость трафика не жалуемся - потому и жируем... ;) А насчёт того что должен был увидеть - так я так скажу - каждый видит то, что хочет - там и обработка сессии была (в натуральном виде), и книги умные для вас лежали...
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33232611
Orion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vladgrigНа самом деле, (лично мне) всё ясно... Вы всё умеете и всё уже знаете... И книги для вас не авторитет, и мнения так себе...
Ничего вам не понятно :)

vladgrigНепонятно одно, - к чему тогда вообще весь этот фарс с вопросами о грамотной обработке!!!!????
Наберитесь терпения.

vladgrigтам и обработка сессии была (в натуральном виде), и книги умные для вас лежали...
Я мало что там смог разглядеть, у меня котик еле загрузился. Связь у меня не ахти, наш МТС в этом плане - отстой. Так что я не понял, толи ваш сайт глючил, толи МТС, я склоняюсь ко второму, но дальше второго экрана мне сдвинуться не удалось.
А отсутствием литературы слава богу я не страдаю, спасибо.
Давайте действительно прекратим этот никому ненужный "фарс", офтопики никому не интересно читать ;)
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33232866
Orion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вобщем решение проблемы сводится к написанию всего одного Http модуля:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
public class SessionTrackerModule : IHttpModule
	{
		public void Dispose()
		{
		}

		public void Init(HttpApplication app)
		{
			app.AcquireRequestState += new EventHandler(OnEnter);
				
		}

		private void OnEnter(object sender, EventArgs e)
		{
			HttpContext context = HttpContext.Current;
			//sam это SessionAppModel
			//по ключу SessionAppModel в сессии может находиться что угодно, главное чтобы 
			//туда при старте приложения (в данном случае это скрипт default.aspx) 
			//было записанно что-то, отличное от null
			string sam_init_url;
			

			if (context.Request.ApplicationPath.Equals("/"))
				sam_init_url = "default.aspx";                
			else
				sam_init_url = string.Concat(context.Request.ApplicationPath, "/default.aspx");

			if(context.Session["SessionAppModel"]==null && context.Request.CurrentExecutionFilePath!=sam_init_url)
			{
				//Помечаем что необходимо вывести сообщение об истечении сессии (если надо)
				//После вывода скрипта переменную DisplaySessionTimeoutMessage лучше удалить
				FormsAuthentication.SignOut();
				context.Session["DisplaySessionTimeoutMessage"]=true;
				context.Response.Redirect(sam_init_url,true);
			}

		}

	}

Ещё надо не забыть этот модуль прописать в Web.config

1. FormsAuthentication.SignOut(); в принципе можно не делать.
2. Если приложение на фреймах, то на странице установки набора фреймов следует добавить JavaScript вида:
Код: plaintext
1.
2.
3.
4.
5.
6.
<script language="javascript">
if ( top.location != this.location )
{
top.location =  this.location;
}
</script>
Он позаботится чтобы фреймы не оказались "сами в себе".
3. Надо удалить все закэшированные данные на событие
Session_End.


Работает на ура! :) Просто, элегантно и без лишнего гемороя ;)
...
Рейтинг: 0 / 0
Грамотная обработка таймаута сессии
    #33232870
Orion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ой, что я написал....
В кэше надо удалить только объекты, относящиеся к закрываемой сессии, ито, если это необходимо.
...
Рейтинг: 0 / 0
35 сообщений из 35, показаны все 2 страниц
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Грамотная обработка таймаута сессии
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]