2010-12-01 20 views
12

Ich versuche, Werte aus meiner App.config-Datei abrufen, die in meinem Arbeitsverzeichnis gespeichert ist, aber wenn ich das Programm ausführen, gibt es null zurück. Ich bin sehr verwirrt, warum das so ist, und habe den Code viele Male durchgesehen, um einen Fehler zu finden.ConfigurationManager Rückgabe null statt String-Werte

Hier ist mein App.config Datei Code:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
    <add key="provider" value="System.Data.SqlClient" /> 
    </appSettings> 
    <connectionStrings> 
    <add name="connection" connectionString="Data Source=(local)\SQLEXPRESS;Initial Catalog=Autos;Integrated Security=True;Pooling=False" /> 
    </connectionStrings> 
</configuration> 

Hier ist mein C# -Code:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Configuration; 
using System.Data; 
using System.Data.Common; 

namespace DataProviderFun 
{ 
    class Program 
    { 
    static void Main(string[] args) 
    { 
     string p = ConfigurationManager.AppSettings["provider"]; 
     string c = ConfigurationManager.ConnectionStrings["connection"].ConnectionString; 

     ... 

Wenn ich diesen Code ausführen, p = null und c = null.

Ich habe System.Configuration.dll referenziert.

+2

Ist Ihre app.config mit ausführbarem richtig eingesetzt werden .. IE: in der Ausführung Verzeichnis tut es eine 'Application existiert. Datei exe.config? –

+1

App.Config ist die verwendete Vorlage. Die eigentliche Konfigurationsdatei wird die Datei "Program.Exe.Config" sein. Dies sollte beim Kompilieren des Projekts geschehen. –

+2

Haben Sie die Konfiguration zu einem DLL-Projekt hinzugefügt? – Aliostad

Antwort

15

Haben Sie sichergestellt, dass die Konfigurationsdatei korrekt in dem Verzeichnis abgelegt ist, in dem Sie die Anwendung ausführen? Gibt es tatsächlich eine Datei namens < App-Name > .exe.config in diesem Verzeichnis?

Ich rate nur hier - vielleicht haben Sie die App.Config-Datei in einem anderen Projekt als Ihre exe-Projekt hinzugefügt ...?

Übrigens habe ich Ihren Code und App.Config wie in einem sauberen Projekt kopiert, und dieser Code arbeitete für mich. Also würde ich in die Richtung der Konfigurationsdatei selbst und nicht in den Code schauen. Der Code ist in Ordnung ...

hoffte, das hilft,

Ran

+0

Ich legte die App.config-Datei in meinem bin \ Debug-Ordner, aber dieser Ordner, und keiner der anderen Ordner dieses Projekts enthalten eine .exe.config-Datei. Dies ist eine ausführbare Datei, keine Bibliothek. Ich habe versucht, das Projekt zu bereinigen und neu zu erstellen, aber diese Datei wird nicht angezeigt. – TheBoss

+7

Sie sollten die App.config-Datei nicht manuell kopieren. Es soll automatisch zur Build-Zeit kopiert und umbenannt werden. Vielleicht haben Sie Ihrem Projekt gerade eine Datei mit dem Namen App.config hinzugefügt, anstatt einen "Anwendungskonfigurations" -Eintrag hinzuzufügen? Sie können versuchen, es erneut zum ausführbaren Projekt hinzuzufügen. – Ran

+0

** "Vielleicht haben Sie Ihrem Projekt gerade eine Datei mit dem Namen App.config hinzugefügt, anstatt einen" Anwendungskonfigurations "-Eintrag hinzuzufügen" ** ist die richtige Antwort. Danke, Ran. – TheBoss