1 /// <summary>
2 /// 添加和更新配置文件web.config的appSettings,缺点是会删除注释
3 /// </summary>
4 /// <param name="key"></param>
5 /// <param name="value"></param>
6 public static void AddUpdateAppSettings(string key, string value)
7 {
8 try
9 {
10 var configFile = WebConfigurationManager.OpenWebConfiguration("~");
11 var settings = configFile.AppSettings.Settings;
12 try
13 {
14 if (settings[key] == null)
15 {
16 settings.Add(key, value);
17 }
18 else
19 {
20 settings[key].Value = value;
21 }
22 configFile.Save(ConfigurationSaveMode.Modified);
23 ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name);
24 }
25 catch (Exception ex)
26 {
27 if (settings.Count != 0)
28 {
29 NLog.Error("配置文件写入失败,需要写入文件的配置信息:===============================");
30 foreach (string tkey in settings.AllKeys)
31 {
32 string tvalue = settings[tkey].Value;
33 NLog.Error(string.Format("Key: {0} Value: {1}", tkey, tvalue));
34 }
35 }
36 throw;
37 }
38 }
39 catch (Exception ex)
40 {
41 NLog.Error("具体失败内容:" + ex);
42 }
43 }
44
45 /// <summary>
46 /// 添加和更新web.config的appSettings,且不删除注释
47 /// </summary>
48 /// <param name="key"></param>
49 /// <param name="value"></param>
50 public static void UpdateAppSetting(string key, string value)
51 {
52 try
53 {
54 Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
55 SaveUsingXDocument(key, value, config.AppSettings.ElementInformation.Source);
56 }
57 catch (Exception ex)
58 {
59 NLog.Error("更新配置失败" + ex);
60 }
61 }
62 private static void SaveUsingXDocument(string key, string value, string fileName)
63 {
64 XDocument document = XDocument.Load(fileName);
65 if (document.Root == null)
66 {
67 return;
68 }
69 var appSettings = document.Root.Element("appSettings");
70 if (appSettings == null) return;
71 XElement appSetting = appSettings.Elements("add").FirstOrDefault(x => x.Attribute("key").Value == key);
72 if (appSetting != null)
73 {
74 appSetting.Attribute("value").Value = value;
75 }
76 else
77 {
78 XElement ele = new XElement("add", new XAttribute("key", key), new XAttribute("value", value));
79 appSettings.Add(ele);
80 }
81 document.Save(fileName);
82 }