【问题标题】:Do you have to restart a windows service if you change the app.config?如果更改 app.config,是否必须重新启动 Windows 服务?
【发布时间】:2009-02-26 14:33:01
【问题描述】:

修改app.config是否需要重启windows服务?

【问题讨论】:

  • 不,您不必这样做。参考链接msdn.microsoft.com/en-us/library/…
  • 否:如果您编写了代码以使用配置管理器再次从设置中读取。是:如果没有附加逻辑,则必须重启服务。

标签: .net windows-services


【解决方案1】:

Yes, you do:

.Net 框架会读取 app.config 一次,并且永远不会再接触 app.config。这就是为什么您必须重新启动应用程序才能获取更改的原因。

.Net 框架为什么没有检测到 app.config 已更改,并刷新所有配置数据?

原因很简单,一般情况下这是不可能的。

让我们在这里使用雷蒙德的“想象这可以做到”的逻辑......

【讨论】:

    【解决方案2】:

    我以前用过这个。本质上,这会在检索值之前重新加载指定的部分。可能比按需刷新的配置文件观察器效率低,但谨慎使用肯定有效。

      ConfigurationManager.RefreshSection("appSettings")
      sValue = ConfigurationManager.AppSettings(name)
    

    【讨论】:

    • 这是一个很棒的发现!
    【解决方案3】:

    不,你没有。但如果您想让app.config 中的更改生效,您可能需要重新启动它。或者您可能希望实现一个自定义配置文件观察器机制,该机制将动态更改服务的设置。

    【讨论】:

    • "如果您想让 app.config 中的更改生效," - 我认为这是隐含在问题中的!
    • 太好了,就在我没有橡胶鸡的时候。
    【解决方案4】:

    是的。

    大概你的意思是 appname.exe.config 文件?

    【讨论】:

      【解决方案5】:

      通常是的。但是,您可以编写一个 Windows 服务,将文件监视器放在配置文件上并感知修改并应用它而无需重新启动。

      例如,Log4Net 日志框架为其配置文件提供了这种机制。

      【讨论】:

        【解决方案6】:

        这超出了问题的范围,但我猜您只想在某些“特定于应用程序”的部分(appSettings 等)中进行更改。

        您最好编写自己的配置节处理程序,它监控自己的配置文件 - 方法 nlog uses。检查“自动重新配置”部分。

        【讨论】:

          猜你喜欢
          • 2016-05-16
          • 2011-05-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多