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

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>

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


当前回答

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

代码将自动生成

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

其他回答

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

这对我来说很管用:

string value = System.Configuration.ConfigurationManager.AppSettings[key];

更新

ConfigurationManager已经过时,您需要在。net Сore环境中使用IConfiguration (IConfiguration由。net Core内置依赖注入提供)。

    private readonly IConfiguration config;

    public MyConstructor(IConfiguration config)
    {
        this.config = config;
    }
    public void DoSomethingFunction()
    {
        string settings1 = config["Setting1"];
    }
ConfigurationManager.RefreshSection("appSettings")
string value = System.Configuration.ConfigurationManager.AppSettings[key];

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