如何重新加载asp.net配置文件缓存?

如何重新加载asp.net配置文件缓存?,asp.net,web-config,url-rewrite-module,Asp.net,Web Config,Url Rewrite Module,我有一个asp.net应用程序,它在web.config中的rewriteRules元素上设置configSource属性,以指向一个单独的配置文件: <rewrite> <rules configSource="App_Data\Config\RewriteRules.config" /> </rewrite> 我的web应用程序以编程方式编辑RewriteRules.config文件,但在编辑和保存文件后,我的web应用程序不会拾取配置更改

我有一个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(“重写/规则”)
,但似乎没有任何效果。使更改生效的唯一方法是编辑并保存主web.config文件,但出于安全原因,我试图避免以编程方式执行此操作


我不明白为什么
HttpRuntime.UnloadAppDomain()
不会导致重新读取外部配置文件。这是预期的行为吗?配置文件缓存是否存在于应用程序域的边界之外?有什么切实可行的方法来实现我想要做的吗?

伙计,你的案例的问题是,相关的
configSection
定义在定义中没有标记为
restartOnExternalChanges=“true”
。例如我们创建了一个自定义配置节,用于在外部文件中存储应用程序URL,并在web.config文件中创建了一个节定义,如

<section name="pageUrlFormats" type="Kahia.Web.Configuration.PageUrlFormats.PageUrlFormatsSection, Kahia.Web" restartOnExternalChanges="true" requirePermission="false" />

以便asp.net知道相关文件中是否发生任何更改:

<pageUrlFormats configSource="Config\PageUrlFormats.config" />

应用程序域重新启动。这适用于所有配置节定义,包括UrlRewrite模块的定义

你们要做的是,找到相关模块的定义。在此场景中,它位于apphost.config的C:\Windows\system32\inetsrv\config\applicationHost.config

在该文件中,查找规则节定义,它的开头如下

<section name="rules"

IIS7配置系统使用与.Net framework配置系统相同的语法,但它是一个不同的实现,具有一些行为差异。RestartNexternalChanges是.Net framework配置系统的一项功能,IIS7配置系统不支持该功能。url重写器模块使用IIS7配置系统。

顺便说一句,我用URLRewite模块对其进行了测试,但由于该模块的本机实现,这对它不起作用。在网站上寻找被接受的答案