Почему ASP.NET обращается к серверу состояний, даже если EnableSessionState страницы = «False», но только для сайта VB.NET, а не для сайта C #?

На нашем веб-сайте используется собственное настраиваемое управление состоянием сеанса отдельно от состояния сеанса ASP.NET. Но поскольку несколько специальных страниц используют службы отчетов SQL Server, нам также необходимо включить состояние сеанса ASP.NET. Поскольку мы находимся в среде с балансировкой нагрузки, мы включили сервер состояний ASP.NET (aspnet_state.exe или «внепроцессный режим») на отдельном внутреннем компьютере.

Сегодня я заметил, что, когда мы временно остановили машину, на которой запущена State Service в нашей среде Dev, веб-сайт Dev перестал работать («Невозможно отправить запрос состояния сеанса серверу состояния сеанса»). Это несмотря на наличие EnableSessionState = «Ложь» на загружаемой странице.

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

--- РЕДАКТИРОВАТЬ ПОСЛЕ БОЛЬШЕ УСТРАНЕНИЯ НЕПОЛАДОК ---

Как предложил пользователь ниже, я попытался создать веб-сайт с нуля, чтобы повторно протестировать его без каких-либо осложнений со стороны httpHandlers, httpModules или другой настраиваемой логики.

  1. Я использовал Visual Studio 2008 для создания нового «веб-сайта ASP.NET» с использованием VB.NET .
  2. Я запустил сайт через VS, что позволило ему включить режим отладки и сгенерировать стандартный файл web.config.
  3. Я добавил в элемент и запустил свой локальный ASP.NET Служба состояний ".
  4. Я изменил EnableSessionState страницы Default.aspx на False и перезагрузил page = OK.
  5. Я остановил службу состояний ASP.NET и перезагрузил страницу =" Невозможно отправить запрос состояния сеанса в сервер состояния сеанса »

В этот момент я был озадачен, потому что другие пользователи утверждали, что они пробовали нечто подобное и не сталкивались с той же проблемой. Поэтому я подумал, связано ли это с использованием VB.NET (хотя это глупо звучит.) Все больше людей используют C # для ASP.NET, поэтому я переделал свой тест выше с веб-сайтом C #, и, о чудо, никаких исключений при доступе к странице! Я получил исключение, только если я установил EnableSessionState в True и фактически обращался к коллекции Session в коде.

Это доказывает, что сайты VB.NET в ASP.NET ведут себя e немного иначе в том, что они обращаются к состоянию сеанса на каждой странице, даже если страница в этом не нуждается. К сожалению, это не отвечает на мой первоначальный вопрос: Почему?

Я собираюсь отправить это сообщение на официальные форумы ASP.NET и посмотреть, могут ли там какие-нибудь гуру пролить свет.

7
задан Jordan Rieger 17 October 2011 в 17:57
поделиться