我有一个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"
添加到重写元素中,但显然IIS重写模块不支持此选项。我还尝试过使用ConfigurationManager.RefreshSection("rewrite/rules")
,但似乎没有任何效果。唯一能使更改生效的方法是编辑和保存主Web.config文件,但出于安全原因,我正在尝试避免以编程方式执行此操作。
我困惑的是为什么HttpRuntime.UnloadAppDomain()
不会导致外部配置文件被重新读取。这是否是预期行为?配置文件缓存是否存在于应用程序域之外?有没有实际的方法来实现我所需要的功能?