我无法访问配置文件中的值。
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>
你有什么建议吗?
答案 0 :(得分:302)
这对我有用:
string value = System.Configuration.ConfigurationManager.AppSettings[key];
答案 1 :(得分:52)
dtsg给出的答案有效:
string filePath = ConfigurationManager.AppSettings["ClientsFilePath"];
但是,您需要将程序集引用添加到
System.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"];
答案 2 :(得分:20)
放手一搏:
string filePath = ConfigurationManager.AppSettings["ClientsFilePath"];
答案 3 :(得分:15)
从配置中读取:
您需要添加对Config的引用
string value = Properties.Settings.Default.keyname;
保存到配置:
Properties.Settings.Default.keyName = value;
Properties.Settings.Default.Save();
答案 4 :(得分:6)
我正在使用:
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 = ... 工作
然后我决定用:
替换内部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
答案 5 :(得分:5)
在app/web.config
文件中设置以下配置:
<configuration>
<appSettings>
<add key="NameForTheKey" value="ValueForThisKey" />
...
...
</appSettings>
...
...
</configuration>
然后您可以通过输入以下代码来访问此代码:
string myVar = System.Configuration.ConfigurationManager.AppSettings["NameForTheKey"];
*请注意,这适用于.net4.5.x
和.net4.6.x
;但不适用于.net core
。
最好的祝福:
拉斐尔
答案 6 :(得分:2)
一些答案似乎有点偏离 IMO 这是我的拍摄大约2016年
<add key="ClientsFilePath" value="filepath"/>
确保引用System.Configuration
。
问题是要求键的值
最肯定应该是
string yourKeyValue = ConfigurationManager.AppSettings["ClientsFilePath"]
//yourKeyValue should hold on the HEAP "filepath"
这是一个可以将值组合在一起的扭曲(不适用于此问题)
var emails = ConfigurationManager.AppSettings[ConfigurationManager.AppSettings["Environment"] + "_Emails"];
emails
将是环境密钥+“_电子邮件”的价值
example : jack@google.com;thad@google.com;
答案 7 :(得分:2)
对于Web应用程序,我通常会编写此方法并使用密钥调用它。
private String GetConfigValue(String key)
{
return System.Web.Configuration.WebConfigurationManager.AppSettings[key].ToString();
}
答案 8 :(得分:2)
很长一段时间后回到这个......
鉴于ConfigurationManager的消亡,对于仍在寻找此尝试答案的任何人(例如):
AppSettingsReader appsettingsreader = new AppSettingsReader();
string timeAsString = (string)(new AppSettingsReader().GetValue("Service.Instance.Trigger.Time", typeof(string)));
当然需要System.Configuration。
(将代码编辑为实际可行且易于阅读的内容)
答案 9 :(得分:1)
看到我做了我认为显而易见的事情:
string filePath = ConfigurationManager.AppSettings.GetValues("ClientsFilePath").ToString();
虽然编译它总是返回null。
然而(从上面)起作用:
string filePath = ConfigurationManager.AppSettings["ClientsFilePath"];
答案 10 :(得分:1)
ConfigurationManager.RefreshSection("appSettings")
string value = System.Configuration.ConfigurationManager.AppSettings[key];
答案 11 :(得分:1)
或者您可以使用
string value = system.configuration.ConfigurationManager.AppSettings.Get("ClientsFilePath");
//Gets the values associated with the specified key from the System.Collections.Specialized.NameValueCollection
答案 12 :(得分:0)
我的简单测试也失败了,遵循其他答案的建议 - 直到我意识到我添加到桌面应用程序的配置文件被命名为&#34; App1.config&#34;。我将其重命名为&#34; App.config&#34;一切都立即起作用了。
答案 13 :(得分:0)
您只需输入:
即可string filePath = Sysem.Configuration.ConfigurationManager.AppSettings[key.ToString()];
因为key
是一个对象而AppSettings
是一个字符串
答案 14 :(得分:0)
代码将自动生成
<configuration> <configSections> <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup ..." ... > <section name="XX....Properties.Settings" type="System.Configuration.ClientSettingsSection ..." ... /> </sectionGroup> </configSections> <applicationSettings> <XX....Properties.Settings> <setting name="name" serializeAs="String"> <value>value</value> </setting> <setting name="name2" serializeAs="String"> <value>value2</value> </setting> </XX....Properties.Settings> </applicationSettings> </configuration>
获得价值
Properties.Settings.Default.Name
OR
Properties.Settings.Default [“ name”]