Назад | Перейти на главную страницу

При повторном использовании пула приложений пользовательские сеансы теряются, если для удостоверения пула приложений установлено значение «настраиваемая учетная запись», но не, если для него установлено значение ApplicationPoolIdentity.

В IIS 8.5 у нас есть веб-приложение, работающее с идентификатором пула приложений, установленным на ApplicationPoolIdentity.

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

Но все в порядке с ApplicationPoolIdentity.

Любая идея, в чем проблема Custom account который использует учетную запись пользователя Windows с разрешением IIS_IUSRS.

Все, что нам нужно, это иметь Custom account идентичности вести себя так же, как ApplicationPoolIdentity для состояния сеанса. В остальном все ок.

Обновление 1:

Во-первых, чтобы исправить заблуждение, вы означало чтобы потерять состояние при повторном запуске пула приложений, если вы не переместили информацию о состоянии из процесса (например, с помощью сервера состояний сеанса ASP.Net, базы данных или схемы, включающей постоянные готовки). Так что, если приложение не было разработано так, чтобы изящно справляться с переработкой - а они не по умолчанию - вы можете обнаружить, что ваше первоначальное предположение неверно. Смотрите также этот ответ.

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

Возможные вещи здесь:

  • По какой-то причине приложение вылетает из строя (вызывая полную перезагрузку пула приложений - это будет отображаться в журналах событий)
  • Домен приложения по какой-то причине перерабатывается (это не будет отображаться в журналах событий, но вы можете прикрепить журнал, который сообщит вам, когда это произойдет)
  • Пользователь каким-то образом вызывает одно из вышеперечисленных действий

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

Итак, я бы проверил:

  • Для доказательства утилизации пула приложений
  • Для доказательства повторного использования AppDomain
  • Журналы приложения и системы для доказательства того, что приложение имеет проблему во время потери состояния сеанса
  • Будь то конкретный пользователь или любой пользователь
  • Можно ли воспроизвести его с помощью отладчика (или настроить ShutdownActionExe для сброса процесса при завершении работы и посмотреть, что произошло в дампе памяти).