AppSettings从.config文件获取值
我无法访问configuration文件中的值。
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); var clientsFilePath = config.AppSettings.Settings["ClientsFilePath"].Value; // the second line gets a NullReferenceException .config文件 :
 <?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <!-- ... --> <add key="ClientsFilePath" value="filepath"/> <!-- ... --> </appSettings> </configuration> 
你有什么build议我该怎么办?
这适用于我:
 string value = System.Configuration.ConfigurationManager.AppSettings[key]; 
dtsg给出的答案是:
 string filePath = ConfigurationManager.AppSettings["ClientsFilePath"]; 
但是,你需要添加一个程序集引用
系统configuration
转到您的解决scheme资源pipe理器并右键单击引用,然后select添加引用 。 select“ assembly”选项卡并search“ configuration” 。

这里是我的App.config的一个例子:
 <?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> <appSettings> <add key="AdminName" value="My Name"/> <add key="AdminEMail" value="MyEMailAddress"/> </appSettings> </configuration> 
你可以通过以下方式获得:
 string adminName = ConfigurationManager.AppSettings["AdminName"]; 
给这个去吧:
 string filePath = ConfigurationManager.AppSettings["ClientsFilePath"]; 
从configuration读取:
您需要添加对Config的引用
- 在你的项目上打开“属性”
- 转到“设置”标签
- 添加“名称”和“值”
- 
使用以下代码获取价值: string值= Properties.Settings.Default.keyname; 
保存到configuration:
  Properties.Settings.Default.keyName = value; Properties.Settings.Default.Save(); 
我在用:
  ExeConfigurationFileMap configMap = new ExeConfigurationFileMap(); //configMap.ExeConfigFilename = @"d:\test\justAConfigFile.config.whateverYouLikeExtension"; configMap.ExeConfigFilename = AppDomain.CurrentDomain.BaseDirectory + ServiceConstants.FILE_SETTING; Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None); value1 = System.Configuration.ConfigurationManager.AppSettings["NewKey0"]; value2 = config.AppSettings.Settings["NewKey0"].Value; value3 = ConfigurationManager.AppSettings["NewKey0"]; 
其中value1 = …和value3 = …给出null和value2 = …作品
然后我决定用下面的内容replace内部的app.config:
 // Note works in service but not in wpf AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", @"d:\test\justAConfigFile.config.whateverYouLikeExtension"); ConfigurationManager.RefreshSection("appSettings"); string value = ConfigurationManager.AppSettings["NewKey0"]; 
使用VS2012 .net 4
一些答案似乎有点closures国际海事组织这是我大约2016年
 <add key="ClientsFilePath" value="filepath"/> 
 确保System.Configuration被引用。 
问题是要求appsettings 密钥的 价值
这当然是应该的
  string yourKeyValue = ConfigurationManager.AppSettings["ClientsFilePath"] //yourKeyValue should hold on the HEAP "filepath" 
这里是一个你可以将价值组合在一起的转折(不是为了这个问题)
 var emails = ConfigurationManager.AppSettings[ConfigurationManager.AppSettings["Environment"] + "_Emails"]; 
  emails将是环境密钥+“_Emails” 
 example : jack@google.com;thad@google.com; 
在app / web .config文件中设置以下configuration:
 <configuration> <appSettings> <add key="NameForTheKey" value="ValueForThisKey" /> ... ... </appSettings> ... ... </configuration> 
那么你可以在你的代码中join这一行来访问它:
 string myVar = System.Configuration.ConfigurationManager.AppSettings["NameForTheKey"]; 
*请注意,这项工作适用于.net4.5.x和.net4.6.x; 但不适用于.net核心。 最好的问候:拉斐尔
看到我做了我认为显而易见的事情是:
 string filePath = ConfigurationManager.AppSettings.GetValues("ClientsFilePath").ToString(); 
编译时总是返回null。
然而这(从上面)工作:
 string filePath = ConfigurationManager.AppSettings["ClientsFilePath"]; 
对于Web应用程序,我通常会写这个方法,只是用键调用它。
 private String GetConfigValue(String key) { return System.Web.Configuration.WebConfigurationManager.AppSettings[key].ToString(); } 
我的简单testing也失败了,根据其他答案的build议,直到我意识到我添加到我的桌面应用程序的configuration文件被命名为“App1.config”。 我把它重命名为“App.config”,一切都立即按照它应该的方式工作。
你可以简单地input:
 string filePath = Sysem.Configuration.ConfigurationManager.AppSettings[key.ToString()]; 
 因为key是一个对象, AppSettings需要一个string