В Asp.net что бы вы поместили в события Session_Start и Session_End в Global.asax? - PullRequest
0 голосов
/ 30 апреля 2009

Если не код, не могли бы вы дать общее объяснение?

Ответы [ 4 ]

4 голосов
/ 30 апреля 2009

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

выдержка из Понимание режимов состояния сеанса + FAQ


  1. Событие Session_End поддерживается только в режиме InProc.
  2. Session_End не будет запущен, если вы закроете браузер. HTTP является протокол без сохранения состояния, и сервер не может знать, имеет ли браузер закрыт или нет.
  3. Session_End будет запущен только:
    (А). Через n минут бездействия (n = значение тайм-аута),
    или
    (Б). Если кто-то вызывает Session.Abandon ().
  4. Для случая (a) (точка 3) Session_End будет выполняться фоновым потоком, что подразумевает: (А). Ваш код в Session_End выполняется с использованием учетной записи рабочего процесса. У вас могут быть проблемы с разрешениями, если вы обращаетесь к таким ресурсам, как база данных. (Б). Если ошибка возникает в Session_End, она молча завершается ошибкой.
  5. Для случая (b) (точка 3), чтобы Session_End был В случае возникновения состояния вашего сеанса сначала должно существовать. Это означает, что вы должны хранить некоторые данные в состоянии сеанса и выполнили хотя бы один запрос.
  6. Опять же для случая (b) (Point3), Session_End будет вызываться, только если заброшенный сеанс фактически найден. В результате, если вы создаете и отказываетесь сеанс внутри того же запроса, потому что сеанс не был сохранен и, следовательно, не может быть найден, Session_End не будет вызван. Это ошибка в .NET Framework 1.0 и 1.1.
4 голосов
/ 30 апреля 2009

В Session_Start вы можете настроить все, что имеет отношение к сеансу, очень сильно зависит от приложения.

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

Подробнее см. Тег SessionState в Web.config

2 голосов
/ 30 апреля 2009

session_start Сбор всей пользовательской информации и хранение в базе данных. Подготовка системы для пользователя, как временный файл, кэшированный файл.

Session_End Сохранение состояния пользователя в базе данных. Система очистки и пр.

1 голос
/ 30 апреля 2009

Наиболее распространенным примером является подсчет пользователей онлайн. Увеличивая счет на Session_Start и наоборот на Session_End.

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