我无法访问配置文件中的值。
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>
你有什么建议我该怎么做吗?
我正在使用:
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
dtsg给出的答案是:
string filePath = ConfigurationManager.AppSettings["ClientsFilePath"];
但是,您需要添加程序集引用
系统。配置
转到解决方案资源管理器,右键单击“引用”并选择“添加引用”。选择“程序集”选项卡并搜索“配置”。
这是我的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"];
以下是我对2016年的看法
<add key="ClientsFilePath" value="filepath"/>
确保系统。引用配置。
问题是询问appsettings键的值
哪个才是最应该的呢
string yourKeyValue = ConfigurationManager.AppSettings["ClientsFilePath"]
//yourKeyValue should hold on the HEAP "filepath"
这里有一个可以将值组合在一起的方法(不是针对这个问题)
var emails = ConfigurationManager.AppSettings[ConfigurationManager.AppSettings["Environment"] + "_Emails"];
电子邮件将是环境键+ " _email "的值
example : jack@google.com;thad@google.com;
打开项目上的“属性”
进入“设置”选项卡
添加“名称”和“值”
代码将自动生成
<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(“名称”)