我无法访问配置文件中的值。

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>

你有什么建议我该怎么做吗?


当前回答

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"];

其他回答

打开项目上的“属性” 进入“设置”选项卡 添加“名称”和“值”

代码将自动生成

<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(“名称”)

ConfigurationManager.RefreshSection("appSettings")
string value = System.Configuration.ConfigurationManager.AppSettings[key];

在很长一段时间后回到这个话题…

鉴于ConfigurationManager的消亡,对于仍然在寻找这个尝试的答案的人(例如):

AppSettingsReader appsettingsreader = new AppSettingsReader();
string timeAsString = (string)(new AppSettingsReader().GetValue("Service.Instance.Trigger.Time", typeof(string)));

需要系统。当然是构型。

(将代码编辑为实际工作并且更易于阅读的内容)

对于web应用程序,我通常会写这个方法,只是用键调用它。

private String GetConfigValue(String key)
    {
       return System.Web.Configuration.WebConfigurationManager.AppSettings[key].ToString();
    }

你可以这样做:

string value1 = System.Configuration.ConfigurationManager.AppSettings.Get(0); //for the first key


string value2 = System.Configuration.ConfigurationManager.AppSettings.Get(1); //for the first key