У меня есть приложение ASP.NET, который устанавливает атрибут на rewriteRules
configSource
элемента в web.config, чтобы указать на отдельный конфигурационный файл:Как перезагрузить кеш-файл конфигурации asp.net?
<rewrite>
<rules configSource="App_Data\Config\RewriteRules.config" />
</rewrite>
Мой веб-приложение делает изменения в файл RewriteRules.config
программно, но мой веб-приложение не получает изменения конфигурации после того, как файл отредактирован и сохранен.
Я попытался позвонить HttpRuntime.UnloadAppDomain()
после редактирования файла. Это успешно перезапустило мой домен приложения, но изменения в RewriteRules.config все еще не получены. Я попытался добавить RestartOnExternalChanges="true"
в элемент rewrite, но это, очевидно, не поддерживается в модуле перезаписи IIS. Я также пробовал ConfigurationManager.RefreshSection("rewrite/rules")
, но это, похоже, не имеет никакого эффекта. Единственный способ заставить изменения вступить в силу - это отредактировать и сохранить основной файл web.config, но я стараюсь избегать этого программно по соображениям безопасности.
Я смущен, почему HttpRuntime.UnloadAppDomain()
не вызывает перезаписи внешних конфигурационных файлов. Это ожидаемое поведение? Каким-то образом кеш-файл конфигурации существует за пределами домена приложения? Есть ли какой-либо практический способ добиться того, что я ищу?
Кстати, я протестировал его с модулем UrlRewrite, и это не работает для него из-за собственной реализации этого модуля. Найдите принятый ответ в [link] (https://forums.iis.net/t/1155629.aspx) –