gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:43:22 25 4
gpt4 key购买 nike

我有一个 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() 不会导致重新读取外部配置文件。这是预期的行为吗?配置文件缓存是否以某种方式存在于应用程序域的范围之外?有什么实用的方法可以实现我想要做的事情吗?

最佳答案

伙计,你的问题是,相关的 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 模块的定义。

你要做的就是找到相关模块的定义。在这种情况下,它位于 C:\Windows\system32\inetsrv\config\applicationHost.config

的 apphost.config

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

<section name="rules"

您必须将 restartOnExternalChanges="true" 属性添加到该配置文件。

关于asp.net - 如何重新加载 asp.net 配置文件缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35463286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com