Можно ли изменить web.config без завершения всех сеансов пользователя?

Можно ли изменить файл web.config, не предоставив всем пользователям на сайте новый сеанс?

Ответ 1

Вы можете переместить изменчивые части web.config во внешние файлы, а затем настроить IIS, чтобы не перезапускать приложения, когда эти файлы меняются.

В приведенном ниже примере параметры приложения и строки подключения были перенесены в другой файл за пределами web.config.

<?xml version="1.0"?>
<configuration>

  <appSettings configSource="appSettings.config"/>

  <connectionStrings configSource="connections.config"/>   

</configuration>

После этого вы можете внести изменения в настройки приложения (или все остальное, что вы положили во внешний файл), не редактируя файл web.config.

Вы также можете посетить файл machine.config и сыграть с атрибутом restartOnExternalChanges, но это следует использовать с осторожностью, поскольку это может иметь непреднамеренные последствия. Некоторые разделы, такие как настройки приложения, уже имеют значение "false".

<section name="appSettings" restartOnExternalChanges="false">

Более подробная информация доступна в статье OdeToCode.

Ответ 2

Если вы не используете состояние сеанса InProc, ваши сеансы должны сохраняться во всех перезапусках приложений.

элемент sessionState (Включая примечания по настройке режима SqlServer.