2010-12-01 10 views
12

J'essaie de récupérer des valeurs de mon fichier App.config qui est stocké dans mon répertoire de travail, mais lorsque je lance le programme, il renvoie null. Je suis très confus pourquoi c'est ainsi, et ai regardé le code plusieurs fois dans une tentative de repérer une erreur.ConfigurationManager retourne null au lieu des valeurs de chaîne

Voici mon code de fichier App.config:

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

Voici mon code C#:

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; 

     ... 

Quand je lance ce code, p = null et c = null.

J'ai référencé System.Configuration.dll.

+2

est votre app.config déployé correctement avec votre exécutable .. IE: dans le répertoire d'exécution ne il existe un 'ApplicationName. fichier exe.config'? –

+1

App.Config est le modèle utilisé. Le vrai fichier de configuration va être le fichier "Program.Exe.Config". Cela devrait être fait lorsque vous compilez le projet. –

+2

Avez-vous par hasard ajouté la config à un projet DLL? – Aliostad

Répondre

15

Avez-vous veillé à ce que le fichier de configuration soit placé correctement dans le répertoire à partir duquel vous exécutez l'application? Y at-il réellement un fichier appelé < nom de l'application > .exe.config dans ce répertoire?

Je devine juste ici - peut-être que vous avez ajouté le fichier App.Config dans un projet différent, puis votre projet d'assemblage exe ...? En passant, j'ai copié votre code et App.Config tel quel dans un projet propre, et ce code a fonctionné pour moi. Donc, je regarderais dans la direction du fichier de configuration lui-même et non dans le code. Le code est très bien ...

Hope this helps,

Ran

+0

J'ai mis le fichier App.config dans mon dossier bin \ Debug, cependant ce dossier, et aucun des autres dossiers associés à ce projet ne contient un fichier .exe.config. C'est un exécutable, pas une bibliothèque. J'ai essayé de nettoyer et de reconstruire le projet mais ce fichier n'apparaît pas. – TheBoss

+7

Vous ne devez pas copier manuellement le fichier App.config. Il est supposé être copié et renommé automatiquement au moment de la construction. Peut-être que vous venez d'ajouter un fichier appelé App.config à votre projet, au lieu d'ajouter un élément "configuration de l'application"? Vous pouvez essayer de le rajouter au projet exécutable. – Ran

+0

** "Peut-être que vous venez d'ajouter un fichier appelé App.config à votre projet, au lieu d'ajouter un élément" configuration de l'application "" ** est la bonne réponse. Merci Ran. – TheBoss

Questions connexes