Подтвердить что ты не робот

Состояние сеанса ASP.NET и несколько рабочих процессов

Мне нужно кое-что понять о состоянии сеанса ASP.NET, так как оно относится к IIS 7 и ASP.net 3.5.

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

Конфигурация по умолчанию для IIS 7 заключается в использовании состояния сеанса в процессе и для распределения максимум 10 рабочих процессов. Вполне вероятно, что эта конфигурация по умолчанию должна работать. Я имею дело с компанией, которая выпустила веб-приложение ASP.NET MVC, которое имеет некоторые проблемы, они обвиняют серверную среду. Утверждение состоит в том, что, поскольку я использую настройки по умолчанию для 10 рабочих процессов, это нарушает их состояние сеанса. Мне нужно знать, действительно ли это точная претензия. Я никогда не знал, что приложение ASP.NET не работает с настройкой по умолчанию, поэтому я немного смущен и должен иметь это разъяснение.

4b9b3361

Ответ 1

Наличие нескольких рабочих процессов и использование InProc не похоже на совместимость.

Смотрите this:

Если вы включите режим Web-сада, установив для атрибута webGarden значение true в элементе processModel файла приложения Web.config, не используйте режим состояния сеанса InProc. Если вы это сделаете, потеря данных может произойти, если разные запросы на один и тот же сеанс обслуживаются разными рабочими процессами.

Ответ 2

Более чем один рабочий процесс - это "веб-сад". Входящее состояние сеанса не будет работать правильно. Вам потребуется использовать один рабочий процесс для вашего веб-приложения или использовать сервер состояния сеанса или SQL Server для состояния сеанса.

Ответ 3

Возможно, я ошибаюсь, но, насколько мне известно, по умолчанию у вас есть только один рабочий процесс для каждого домена приложения с несколькими рабочими потоками для обработки запросов. В этом случае состояние сеанса In-Proc должно работать нормально (настройки по умолчанию).

Но если у вас есть несколько рабочих процессов (а не только рабочие потоки, фактические рабочие процессы), вам необходимо выйти из состояния сеанса процесса.

Я думаю, что более одного рабочего процесса в ASP.NET относится к веб-садовому режиму, который вы должны специально активировать, и если вы это делаете, то вам нужно не управлять процессом. Смотрите комментарий на этой странице в заголовке In-Process Mode.