zoukankan      html  css  js  c++  java
  • 更改windows service的配置信息后,无须重启服务

    通过ConfigurationManager.RefreshSection刷新某一配置节点,我们获取配置值的时候就不需要重启服务,例如:

    ConfigurationManager.RefreshSection("appSettings");// 刷新命名节,在下次检索它时将从磁盘重新读取它。
    在这个网站上面的http://stackoverflow.com/questions/590791/do-you-have-to-restart-a-windows-service-if-you-change-the-app-config/提供的方案。

    为什么加了那一行ConfigurationManager.RefreshSection(命名节点);就可以了呢?

    查看MSDN,解释是这样的:“刷新命名节,这样在下次检索它时将从磁盘重新读取”。下面是VS里的函数说明:

            //
            // 摘要:
            //     刷新命名节,这样在下次检索它时将从磁盘重新读取它。
            //
            // 参数:
            //   sectionName:
            //     要刷新的节的配置节名称或配置路径和节名称。
            public static void RefreshSection(string sectionName);

    原来,更改配置文件之后,应用程序读取配置的顺序不是从物理文件读取,而是从其缓存中读取(ConfigurationManager.RefreshSection方法在不影响其他节的前提下使指定配置节的缓存失效),必须强制刷新配置文件,才能读取到更改后的配置节信息 。

    毫无疑问,和正常的读取配置文件节点方法相比,这个读取配置的方法在性能上应该有点影响,至于损失多少,会不会造成性能瓶颈,你懂的。

    最后,从MSDN的例子我们也可以看出来,这个方法对于动态写入/读取配置文件非常有效。不过对于web应用程序这个方法可能不适合,因为大家知道,修改web.config相当于重启了web应用程序。

  • 相关阅读:
    光学
    ZYNQ学习笔记2——实例
    ZYNQ学习笔记
    AD使用技巧
    关于浮点运算的一点见解
    解决ccs不能同时导入两个相同工程名的问题
    multisum14 快捷键
    你的进程为什么被OOM Killer杀死了?
    Linux下哪些进程在消耗我们的cache?
    linux 安装python3.7.5
  • 原文地址:https://www.cnblogs.com/visionwang/p/2696478.html
Copyright © 2011-2022 走看看