读取MyTest.exe.config配置文件仅获键无值的问题求助
正确读取Exe配置文件AppSettings值的解决方案
问题出在你调用了appSettings[key].ToString(),KeyValueConfigurationElement类的默认ToString()方法返回的是类的完全限定名,而非配置项的实际值。你需要访问该对象的Value属性来获取对应配置值。
修改后的遍历读取代码
try { ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap(); fileMap.ExeConfigFilename = "MyTest.exe.config"; Configuration configFile = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); var appSettings = configFile.AppSettings.Settings; if (appSettings.Count == 0) { Console.WriteLine("AppSettings is empty."); } else { foreach (var key in appSettings.AllKeys) { Console.WriteLine("Key: {0} Value: {1}", key, appSettings[key].Value); } } } catch (ConfigurationErrorsException) { Console.WriteLine("Error reading app settings"); }
修改后的单个键读取代码
try { String key = "Setting1"; ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap(); fileMap.ExeConfigFilename = "MyTest.exe.config"; Configuration configFile = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); var appSettings = configFile.AppSettings.Settings; string result = appSettings[key].Value; Console.WriteLine(result); } catch (ConfigurationErrorsException) { Console.WriteLine("Error reading app settings"); }
说明
KeyValueConfigurationElement是专门封装AppSettings中单个配置项的类,它包含Key和Value两个属性,分别对应配置文件里的key和value属性值。直接调用ToString()会返回类的类型名称,这就是你之前输出System.Configuration.KeyValueConfigurationElement的原因,改用Value属性即可获取实际配置值。
内容的提问来源于stack exchange,提问作者user2835586
相关产品推荐
相关产品推荐

