2011-07-13 88 views
3

我创建了一个HTTPModule,它应该记录请求和响应。
告知http模块如何工作的参数位于web.config中。
但是,为了让http模块使用最新的参数值工作,每个请求都从app.config中读取参数。检测web.config已更改

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

回答

7

你根本不需要那样做。您只能加载这些属性一次并将它们存储在某处。每次web.config改变整个ASP.NET应用程序时,http模块将不得不重新初始化。

+1

是的,我也认为它没有做您每次请求参数值时的web.config文件的解析,但它使用的缓存值(所以基本上,没有性能损失从ConfigurationManager中读出对缓存价值你自己) – veljkoz

+0

这根本不是真的。改变web.config的方式有很多,不会终止你的应用程序。我现在正在排除其中一种情况。 –

+0

@SonicSoul:我会很乐意阅读你的情况。 –

2

@Ladislav & @velijoz是正确的。 web.config只读一次,并将值存储在内存中,直到应用程序重新启动,因为web.config已被更改。

除非你直接打开并阅读文件。这将是一件坏事。

如果设置定期更改,可以将它们放在另一个文件中,读取值并将它们存储在缓存中,并对文件进行缓存依赖。这样,您可以更改设置,而无需每次重新启动应用程序。当您更改设置文件时,缓存依赖性会使缓存无效,您的代码可能会再次读取文件。

西蒙