【发布时间】:2016-05-29 13:06:06
【问题描述】:
我有一个 asp.net 应用程序,它将 web.config 中 rewriteRules 元素上的 configSource 属性设置为指向单独的配置文件:
<rewrite>
<rules configSource="App_Data\Config\RewriteRules.config" />
</rewrite>
我的 Web 应用程序以编程方式对 RewriteRules.config 文件进行了编辑,但我的 Web 应用程序在编辑和保存文件后没有获取配置更改。
我在编辑文件后尝试调用HttpRuntime.UnloadAppDomain()。这成功地重新启动了我的应用程序域,但是 RewriteRules.config 中的更改仍然没有被拾取。我尝试将 RestartOnExternalChanges="true" 添加到 rewrite 元素,但这显然不支持 IIS rewrite 模块。我也试过ConfigurationManager.RefreshSection("rewrite/rules"),但这似乎没有任何效果。使更改生效的唯一方法是编辑并保存主 web.config 文件,但出于安全原因,我试图避免以编程方式执行此操作。
我很困惑为什么HttpRuntime.UnloadAppDomain() 不会导致重新读取外部配置文件。这是预期的行为吗?配置文件缓存是否以某种方式存在于应用程序域的范围之外?有什么实用的方法可以实现我想要做的事情吗?
【问题讨论】:
标签: asp.net web-config url-rewrite-module