2014-02-07 17 views
6

Ich habe eine Konfigurationsdatei in einem WPF-Projekt, um die Verbindungszeichenfolge zu speichern. Aber wenn ich versuche, AppSettings und ConnectionStrings zu bekommen, bekomme ich null.ConfigurationManager in WPF

der Datei Web.config ist wie folgt:

<?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> 

ich auf verschiedene Weise versucht:

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

Keiner von ihnen arbeitete.

Aber dieses arbeitete:

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

(Das bedeutet, dass ich nicht eine Konfigurationsdatei verwenden können, die gegen meinen Willen ist) Ich brauche Hilfe.

+2

Warum wählen Sie WEB.config für WPF App. Es muss die APP.config. –

+0

: P Ich habe es gerade umbenannt in WEB.config –

Antwort

2

Ich habe es herausgefunden! Ich hätte keine neue Konfigurationsdatei erstellen sollen, es gibt eine Standarddatei app.config im Projekt. Jetzt ist alles in Ordnung. Danke euch allen!

<?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; 
0

Dieser verwenden System.Configuration Namespace

using System.Configuration; 


Oder fügen System.Configuration in Bezug

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

Ich habe die System.Configuration Referenz und Namespace hinzugefügt. Das Problem scheint zu sein, dass System.ConfigurationManager.ConnectionStrings eine Zählung von 0 hat, deshalb kann ich den Wert nicht durch Schlüssel oder Index erhalten. Es ist komisch. Es funktioniert in Winform-Anwendung. –

0

Sie haben die System.Configuration Assembly verweisen, die in GAC

Verwendung von Konfigurationsmanager ist WPF ist nicht Spezifisch: Es ist der privilegierte Weg, auf Konfigurationsinformationen für jede Art zuzugreifen pe Anwendungs ​​

Bitte sehen MSDN für weitere Informationen

11

einfach ein app.config hinzufügen und nicht web.config, weil es nicht eine Web-Anwendung ist.

Und danach ist es zu einfach, nur einen Verweis auf System.Configuration hinzufügen und dann verwenden.

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