ASP.Net Session_Start всегда стреляет - PullRequest
4 голосов
/ 03 февраля 2011

Я немного запутался в следующем: Я настроил сайт asp.net с некоторой логикой в ​​Session_Start () в Global.asx. Я ожидал, что это даже будет срабатывать только один раз во время сеанса. Однако событие запускается с каждым запросом.

Когда я объявлял фиктивный объект сеанса, это решало проблему. Также я могу решить эту проблему, добавив <sessionState mode="InProc" /> в web.config. Я использую IIS7, и я проверил значение по умолчанию, и оно уже установлено «В процессе».

Я что-то упустил? Это нормальное поведение? Я ожидал, что это событие сработает, даже если я не объявлю объект сеанса.

Ответы [ 3 ]

1 голос
/ 03 февраля 2011

Я думаю, что это происходит, если используемый браузер не разрешает использование файлов cookie. Также, если ваш пул приложений перезапускается, сеанс будет потерян.

<sessionState cookieless="true" />

Это решит проблемы с недопустимыми файлами cookie.

1 голос
/ 03 февраля 2011

Вы бы проверили:

  • Включены ли в вашем браузере файлы cookie?
  • Если вы хотите, чтобы cookie-файлы браузера были отключены, вам потребуется управление состоянием сеанса без файлов cookie (это не очень хороший вариант, поскольку параметр сеанса будет в строке запроса ...).
  • Во время Application_Start в вашем Global.asx, если вы что-то там делаете, проверили, не выдает ли какое-то исключение, которое приводит к сбою и завершению вашего приложения?
  • На любом этапе после Application_Start и доSession_Start, ты что-то делаешь?Если это ваш случай, отметьте то же, что и в предыдущем пункте.
1 голос
/ 03 февраля 2011

Сохраните что-нибудь в объекте Session.

Session["dummy"] = 1;

http://blogs.msdn.com/b/nikhiln/archive/2007/06/21/detecting-session-timeout-in-asp-net-2-0-web-applications.aspx

...