检测web.config文件是否已更改。

3

我创建了一个HTTPModule,用于记录请求和响应。
告诉HTTP模块如何工作的参数位于web.config文件中。
但是,为了让HTTP模块使用最新的参数值,每个请求我都会从app.config文件中读取参数。

有没有一种方法可以检测web.config文件中的更改,以便重新加载HTTP模块参数,而不是每次响应时都读取它们?

3个回答

7
您根本不需要这样做。您只需加载这些属性一次并将它们存储在某个地方。每次web.config更改时,您的整个ASP.NET应用程序都会重新启动,并且http模块必须再次初始化。

1
是的,我认为它不会每次请求参数值时都解析 web.config 文件,而是使用缓存的值(因此,在读取 ConfigurationManager 与自己缓存值之间没有性能损失)。 - veljkoz
那并不是真的。有很多情况下更改web.config不会终止你的应用程序。我现在正在解决其中一种情况。 - Sonic Soul
@LadislavMrnka 我在这里发布了详细信息 https://dev59.com/kn_aa4cB1Zd3GeqP78yV - Sonic Soul

2

@Ladislav和@velijoz是正确的。web.config只会读取一次,然后将值存储在内存中,直到应用程序重新启动,因为例如更改了web.config。

当然,除非您直接打开并读取文件。那样是不好的。

如果设置经常更改,您可以将它们放在另一个文件中,读取值并将其存储在缓存中,并在文件上使用缓存依赖项。这样,您可以在不每次重启应用程序的情况下更改设置。当更改设置文件时,缓存依赖项将使缓存无效,您的代码可以再次读取文件。

西蒙


0

我最近学到的是,例如你改变了你的web.config文件时,技术上说asp.net应用程序并没有重启 - 它会卸载。当你发出下一个请求或启动应用程序池时,它才开始加载。

我把这归类为asp.net开发人员常见的误解之一;)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接