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

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>

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


当前回答

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

其他回答

我的简单测试也失败了,遵循这里的其他答案的建议—直到我意识到我添加到桌面应用程序的配置文件的名称为“App1.config”。我将其重命名为“App.config”,一切都立即正常工作。

试试这个:

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

在我的情况下,我必须在@System.Configuration.ConfigurationManager的两侧抛出一个“on either side”。AppSettings["key"]'以便它作为字符串读入我的程序。我使用Javascript,所以这是在我的标签。注意:ToString()不适合我。

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