ConfigurationManager in WPF

2020-04-02 09:33发布

问题:

I have a config file in a wpf project to store the connectionstring. But when I try to get AppSettings and ConnectionStrings, I get null.

the WEB.config file is like this:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="Trackboard" connectionString="Data Source=(localdb)\v11.0;Initial Catalog=Trackboard;Integrated Security=True;AttachDbFileName=E:\Users\Sean\Workspace\DATABASE\Trackboard.mdf"/>
  </connectionStrings>
  <appSettings>
    <add key="Trackboard" value="Data Source=(localdb)\v11.0;Initial Catalog=Trackboard;Integrated Security=True;AttachDbFileName=E:\Users\Sean\Workspace\DATABASE\Trackboard.mdf"/>
  </appSettings>
</configuration>

I tried in several ways:

W1: ConnStr = ConfigurationManager.ConnectionStrings["Trackboard"].ConnectionString;
W2: ConnStr = ConfigurationManager.ConnectionStrings[0].ConnectionString;
W3: ConnStr = ConfigurationManager.AppSettings["Trackboard"];
W4: ConnStr = ConfigurationManager.AppSettings[0];

None of them worked.

But this one worked:

ConnStr = @"Data Source=(localdb)\v11.0;Initial Catalog=Trackboard;Integrated Security=True;AttachDbFileName=E:\Users\Sean\Workspace\DATABASE\Trackboard.mdf";

(That means I cannot use a config file, which is against my will) I need help.

回答1:

Just add an app.config and not web.config because it is not a web application.

And after that it's too simple, just add a reference to to System.Configuration and then use this.

var ConnStr = ConfigurationManager.AppSettings["Trackboard"];


回答2:

I've figured it out! I shouldn't have created a new config file, there is a default app.config file in project. Now everything is fine. Thank you all!

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="Trackboard.Properties.Settings.TrackboardConnectionString"
            connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\DATABASE\Trackboard.mdf;Integrated Security=True"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
</configuration>

private static string ConnStr = ConfigurationManager.ConnectionStrings["Trackboard.Properties.Settings.TrackboardConnectionString"].ConnectionString;


回答3:

This one use System.Configuration namespace

using System.Configuration;


Or add System.Configuration in reference

System.ConfigurationManager.ConnectionStrings["Trackboard"].ConnectionString;
System.ConfigurationManager.ConnectionStrings[0].ConnectionString;


回答4:

You have to reference the System.Configuration assembly which is in GAC

Use of ConfigurationManager is not WPF specific : it is the priviledged way to access configuration information for any type of application

Please see MSDN for further info