当前位置:编程学习 > C#/ASP.NET >>

appsetting详解

1             // Get the application configuration file.
 2             System.Configuration.Configuration config =
 3               ConfigurationManager.OpenExeConfiguration(
 4                     ConfigurationUserLevel.None);
 5             string sectionName = "appSettings";
 6
 7             NameValueCollection appSettings =
 8                 ConfigurationManager.AppSettings;
 9             List<string> allDatFilesNames;
10
11             allDatFilesNames = GetAllDataFileName();
12             if (allDatFilesNames == null)
13             {
14                 Environment.Exit(0);
15             }
16
17             //先清空之前的数据文件记录
18             config.AppSettings.Settings.Clear();
19             // Save the configuration file.
20             config.Save(ConfigurationSaveMode.Modified);
21
22             // Force a reload of the changed section. This
23             // makes the new values available for reading.
24             ConfigurationManager.RefreshSection(sectionName);
25             appSettings =
26                 ConfigurationManager.AppSettings;
27
28             foreach (string fullName in allDatFilesNames)
29             {
30                 string fileName = Path.GetFileName(fullName);
31                 if (appSettings[fileName] == null)
32                 {
33                     // 键值仅保存文件名 www.zzzyk.com
34                     config.AppSettings.Settings.Add(fileName, GetFileItemNum(fullName).ToString());
35                 }
36                 else
37                 {
38                     // 已存在此键值,则仅刷新
39                     config.AppSettings.Settings[fileName].Value = GetFileItemNum(fullName).ToString();
40                 }
41
42
43             }
44
45             // Save the configuration file.
46             config.Save(ConfigurationSaveMode.Modified);
47
48             // Force a reload of the changed section. This
49             // makes the new values available for reading.
50             ConfigurationManager.RefreshSection(sectionName);

使用appSettings要特别注意,上面代码中config.AppSettings.Settings和appSettings都能够索引到键值,正常读取配置文件之后,两者是一样的,但是,当执行了上面的config.AppSettings.Settings.Clear();之后,两者就不同步了,config.AppSettings.Settings(配置文件里)清空了,但是appSettings(内存里)还有之前的记录,(appSettings[fileName] == null)就不一定为true了,这样直接用config.AppSettings.Settings[fileName].Value添加值,会报null异常。
 
所以还加了上面19~26行部分代码,而且
appSettings =
                ConfigurationManager.AppSettings;
这个给appSettings重新赋值也是必须的。

 

摘自 果壳中的宇宙
补充:软件开发 , C# ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,