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