【问题标题】:detect web.config has been changed检测 web.config 已更改
【发布时间】:2011-07-13 09:33:43
【问题描述】:

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

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

【问题讨论】:

    标签: c# .net asp.net web-config httpmodule


    【解决方案1】:

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

    【讨论】:

    • 是的,而且我认为每次请求参数值时它都不会解析 web.config 文件,而是使用缓存的值(所以基本上,从 ConfigurationManager 读取对自己缓存值)
    • 这根本不是真的。更改 web.config 不会终止您的应用程序的方式有很多种。我现在正在对其中一种情况进行故障排除。
    • @LadislavMrnka 我在这里发布了详细信息stackoverflow.com/questions/23726529/…
    【解决方案2】:

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

    当然,除非您是直接打开和读取文件。那将是一件坏事。

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

    西蒙

    【讨论】:

      【解决方案3】:

      我最近了解到的是,例如,当您从技术上更改您的 web.config 时,asp.net 应用程序会重新启动 - 它会卸载。当您触发下一个请求或启动应用程序池时,它就会开始加载。

      我是在对 asp.net 开发人员的普遍误解下提交此文件的;)

      【讨论】:

        猜你喜欢
        • 2011-05-11
        • 1970-01-01
        • 2012-01-05
        • 2017-06-08
        • 1970-01-01
        • 1970-01-01
        • 2013-12-15
        • 2023-04-02
        • 1970-01-01
        相关资源
        最近更新 更多