ASP.NET: большое количество Session_Start с одинаковым идентификатором сеанса - PullRequest
0 голосов
/ 09 февраля 2010

Я использую веб-сайт ASP.NET на своем компьютере для разработки (.NET 2.0 в Vista / IIS7). Метод Session_Start в global.asax.cs регистрирует каждый вызов файла (log4net). Метод Session_End также регистрирует каждый вызов.

Я использую состояние сеанса InProc и устанавливаю время ожидания сеанса на 5 минут (чтобы избежать ожидания в течение 20 минут).

Я зашел на сайт, подожди 5 минут, я увижу журнал Session_End. Тогда я F5 сайт. В браузерах по-прежнему есть сеансовый файл cookie и он отправляется на сервер. Session_Start вызывается, и новый сеанс создается с использованием того же идентификатора сеанса (кстати: мне нужно, чтобы это был тот же идентификатор сеанса, поскольку он используется для хранения данных в базе данных).

Результат: Каждый раз, когда я нажимаю F5 в ранее завершенном сеансе, вызывается метод Session_Start.

Когда я открываю другой браузер, метод Session_Start вызывается только один раз. Затем через 5 минут Session_End каждый F5 вызывает выполнение метода Session_Start.

Кто-нибудь может объяснить, почему это происходит?

Обновление: После истечения времени ожидания сеанса все последующие запросы имеют начало и конец сеанса. Итак, в конце мой вопрос: почему сессии по этому последующему запросу закрываются немедленно?

2010-02-09 14:49:08,754 INFO  Global.asax[7486] [(null)] - Session started. SID=nzponumvf1hbaniverffp4mq host=127.0.0.1
2010-02-09 14:49:08,754 INFO  Global.asax[7486] [nzponumvf1hbaniverffp4mq] - Request start: GET http://localhost:80/js/settings.js
2010-02-09 14:49:08,756 INFO  Global.asax[7486] [(null)] - Session ended. SID=nzponumvf1hbaniverffp4mq
2010-02-09 14:49:08,760 INFO  Global.asax[7486] [(null)] - Session started. SID=nzponumvf1hbaniverffp4mq host=127.0.0.1
2010-02-09 14:49:08,760 INFO  Global.asax[7486] [nzponumvf1hbaniverffp4mq] - Request start: GET /css/package.aspx?name=core
2010-02-09 14:49:08,761 INFO  Global.asax[7486] [(null)] - Session ended. SID=nzponumvf1hbaniverffp4mq
2010-02-09 14:49:08,762 INFO  Global.asax[7486] [(null)] - Session started. SID=nzponumvf1hbaniverffp4mq host=127.0.0.1
2010-02-09 14:49:08,762 INFO  Global.asax[7486] [nzponumvf1hbaniverffp4mq] - Request start: GET /js/package.aspx?name=all
2010-02-09 14:49:08,763 INFO  Global.asax[7486] [(null)] - Session ended. SID=nzponumvf1hbaniverffp4mq
2010-02-09 14:49:08,763 INFO  Global.asax[7486] [(null)] - Session started. SID=nzponumvf1hbaniverffp4mq host=127.0.0.1
2010-02-09 14:49:08,763 INFO  Global.asax[7486] [nzponumvf1hbaniverffp4mq] - Request start: GET /css/package.aspx?name=rest
2010-02-09 14:49:08,764 INFO  Global.asax[7486] [(null)] - Session ended. SID=nzponumvf1hbaniverffp4mq
2010-02-09 14:49:08,764 INFO  Global.asax[7486] [(null)] - Session started. SID=nzponumvf1hbaniverffp4mq host=127.0.0.1
2010-02-09 14:49:08,765 INFO  Global.asax[7486] [nzponumvf1hbaniverffp4mq] - Request start: GET /css/package.aspx?name=vacation
2010-02-09 14:49:08,765 INFO  Global.asax[7486] [(null)] - Session ended. SID=nzponumvf1hbaniverffp4mq

Соответствующий раздел web.config:

<system.web>
  <compilation debug="true" />
  <sessionState timeout="2" regenerateExpiredSessionId="false" />
</system.web>

Ответы [ 3 ]

1 голос
/ 09 февраля 2010

не могли бы вы опубликовать свой web.config?

проверьте значение регенератExpiredSessionId в system.web / sessionState

0 голосов
/ 05 апреля 2010

Я думаю, вы неправильно понимаете значение регенератExpiredSessionId . В настоящее время он имеет значение false, что означает, что он будет повторно использовать идентификаторы истекшего сеанса, а не генерировать новый каждый раз, когда пользователь получает новый сеанс. Идентификатор сеанса ASP.NET хранится в файле cookie пользователя, и если для параметраraterateExpiredSessionId задано значение false, то один и тот же идентификатор сеанса пользователей будет повторно использоваться для каждого нового сеанса, который они получают, пока файл cookie действителен.

Попробуйте установить для параметраraterateExpiredSessionId значение true.

0 голосов
/ 05 апреля 2010

Вносите ли вы изменения в папку bin вашего веб-приложения? Как и при входе в папку bin, это может привести к тому, что запуск сеанса запускается несколько раз.

...