配置文件监听器

主要是根据FileSystemWatcher类来监听配置文件

目标是每次修改了web.config配置文件不用回收应用程序或者重启网站

贴出实现核心代码

  1     /// <summary>

  2     /// 配置文件监听器

  3     /// </summary>

  4     public sealed class ConfigMonitor

  5     {

  6         /// <summary>

  7         /// 配置文件路径

  8         /// </summary>

  9         private static string path = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;

 10 

 11         /// <summary>

 12         /// 配置文件路径

 13         /// </summary>

 14         public static string Path

 15         {

 16             get

 17             {

 18                 return path;

 19             }

 20 

 21             set

 22             {

 23                 path = value;

 24             }

 25         }

 26 

 27         /// <summary>

 28         /// 配置文件名称

 29         /// </summary>

 30         private static string filter = "\\Web.config";

 31 

 32         /// <summary>

 33         /// 配置文件名称

 34         /// </summary>

 35         public static string Filter

 36         {

 37             get

 38             {

 39                 return filter;

 40             }

 41 

 42             set

 43             {

 44                 filter = value;

 45             }

 46         }

 47 

 48         /// <summary>

 49         /// 配置文件更改委托定义

 50         /// </summary>

 51         public delegate void EventHandlerAfterConfigModify();

 52 

 53         /// <summary>

 54         /// 配置文件更改事件

 55         /// </summary>

 56         public static event EventHandlerAfterConfigModify ConfigModifyInfoEvent;

 57 

 58         /// <summary>

 59         /// 配置对象

 60         /// </summary>

 61         public static Configuration Config { get; private set; }

 62 

 63         /// <summary>

 64         /// Initializes static members of the <see cref="ConfigMonitor"/> class.

 65         /// 构造函数

 66         /// </summary>

 67         static ConfigMonitor()

 68         {

 69             MonitorConfigFile();

 70             InitConnectionConfig();

 71         }

 72 

 73         /// <summary>

 74         /// 创建配置文件发动监听器

 75         /// </summary>

 76         private static void MonitorConfigFile()

 77         {

 78             FileSystemWatcher fileWatcher = new FileSystemWatcher

 79                                                 {

 80                                                     Path = Path,

 81                                                     Filter = Filter,

 82                                                     NotifyFilter = NotifyFilters.CreationTime | NotifyFilters.LastWrite | NotifyFilters.FileName

 83                                                 };

 84 

 85             fileWatcher.Changed += OnChanged;

 86             fileWatcher.Created += OnChanged;

 87             fileWatcher.Deleted += OnChanged;

 88             fileWatcher.Renamed += OnChanged;

 89             fileWatcher.EnableRaisingEvents = true;

 90         }

 91 

 92         /// <summary>

 93         /// 更改处理事件

 94         /// </summary>

 95         /// <param name="source">事件源</param>

 96         /// <param name="e">事件参数</param>

 97         private static void OnChanged(object source, FileSystemEventArgs e)

 98         {

 99             InitConnectionConfig();

100             RaiseEvent();

101         }

102 

103         /// <summary>

104         /// 向订阅者发布信息

105         /// </summary>

106         private static void RaiseEvent()

107         {

108             if (ConfigModifyInfoEvent != null)

109             {

110                 ConfigModifyInfoEvent();

111             }

112         }

113 

114         /// <summary>

115         /// 初始化所有连接配置

116         /// </summary>

117         private static void InitConnectionConfig()

118         {

119             string filePath = Path + Filter;

120             var map = new ExeConfigurationFileMap { ExeConfigFilename = filePath };

121             Config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);

122         }

123     }
View Code

 

你可能感兴趣的:(配置文件)