Мне нужно сохранить раздел настроек рабочего приложения за пределами Web.config; Я не хочу, чтобы ключи и другая секретная информация хранились в репозитории исходного кода. Однако, если я редактирую настройки приложения с помощью IIS Mananger, он изменяет файл Web.config, который будет перезаписан при следующем развертывании.
Как я могу сохранить эти настройки вне Web.config, который поставляется с приложением при развертывании? Например, это каким-то образом делается на веб-сайтах Azure - настройки приложения, которые вы настраиваете на портале, не хранятся в Web.config - что можно подтвердить, загрузив файл через FTP. Как это делается?
Для узлов appSettings и connectionStrings в web.config вы можете переместить их в отдельные файлы вне web.config.
В вашем web.config у вас будет:
<appSettings configSource="appsettings.config"></appSettings>
а затем новый файл appsettings.config:
<?xml version="1.0"?>
<appSettings>
<add key="foo" value="bar" />
</appSettings>
Затем вы должны убедиться, что вы не развертываете эти новые файлы и не храните их разными на рабочем сервере и в среде разработки.
Все мои файлы web.config исключены из моего процесса развертывания, если мне нужно их изменить, я делаю это на этапе или на рабочих сайтах.
Помимо файла (ов) web.config на ваших сайтах существует несколько глобальных настроек для IIS.
%systemroot%\System32\inetsrv\config\applicationHost.config
имеет все глобальные настройки IIS, в зависимости от вашего Feature Delegation
эти настройки могут быть перезаписаны в ваших локальных файлах web.config. Но вы можете предотвратить это, установив для функции значение «Только чтение» в делегировании функций на уровне сервера.
Для настроек, связанных с dot.NET, есть два глобальных файла:
%systemroot%\Microsoft.NET\Framework??\v?.?.????\CONFIG\machine.config
%systemroot%\Microsoft.NET\Framework??\v?.?.????\CONFIG\web.config
Существует несколько версий этих файлов, по одной для каждой версии фреймворка для каждой платформы ОС.
Все настройки, сделанные в этих файлах, наследуются вашим локальным файлом web.config.
Однако я не думаю, что есть способ предотвратить переопределение локальным файлом web.config настроек, установленных в глобальных файлах.