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的引用

  1. 在你的项目上打开“属性”
  2. 转到“设置”标签
  3. 添加“名称”和“值”
  4. 使用以下代码获取价值:

    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