2009-08-11 4 views
0

Je m'excuse car cette question est un peu basique; Cependant, après beaucoup de recherches, je n'ai pas trouvé de réponse appropriée. Je construis une application Windows Forms et j'ai besoin de référencer un fichier app.config pour l'emplacement vers un fichier de données. Avant d'appelerFichier de configuration de l'application de gestion des exceptions .NET

XElement xml = XElement.Load(ConfigurationManager.AppSettings["EntityData"].ToString()); 

Je souhaite m'assurer que le fichier app.config existe. J'ai essayé plusieurs méthodes mais il semble que c'est beaucoup plus de travail alors il devrait être. Par exemple, j'ai essayé d'utiliser le code suivant pour déterminer le chemin du fichier

 Uri uri = new Uri(System.Reflection.Assembly.GetExecutingAssembly().CodeBase); 
     string fullConfigurationFilename = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(uri.AbsolutePath), configurationFilename); 

mais je rencontre des problèmes avec des espaces dans le chemin. Existe-t-il un meilleur moyen de vérifier l'existence de l'app.config, ai-je même besoin de vérifier?

Merci

+0

Accédez simplement aux données de configuration. Si le fichier est manquant, une exception sera générée, indiquant les erreurs. –

+0

ouais si vous voulez vraiment vérifier cela mettre un essai attraper lors de l'accès au fichier AppSettings et le prendre à partir de là – JohnIdol

+0

True, sauf que vous auriez probablement accès aux paramètres de l'application dans toute l'application, ce qui peut être un gâchis. –

Répondre

2

Je ne pense pas que vous ayez besoin de vérifier que le fichier de configuration existe. Le code suivant devrait fonctionner sans exceptions:

string temp = ConfigurationManager.AppSettings["EntityData"]; 
if (temp != null) 
{ 
    XElement xml = XElement.Load(temp); 
} 

Notez que AppSettings retournera une chaîne si la clé se trouve, de sorte que vous n'avez pas besoin d'appeler ToString pour le convertir. Si la clé n'existe pas, vous devriez obtenir une référence null que vous pouvez tester.

+0

Une exception se produit si le fichier de configuration n'existe pas. Je peux gérer l'exception, mais il semble qu'une solution plus robuste assurerait qu'elle soit là avant de se fier à la gestion des exceptions. –

+0

@lansinwd: êtes-vous sûr? J'ai essayé le code ci-dessus à la fois avec le fichier de configuration n'étant pas préréglé, le fichier existant mais sans une section 'appSettings' et avec la section' appSettings' présente mais sans la clé en question. Dans aucun de ces cas, il a jeté une exception, mais il vient de renvoyer "null". J'ai fait ces tests dans une application de console; peut-être que d'autres types d'applications entraînent des comportements différents. –

+0

Merci d'avoir répondu. J'ai essayé ceci sur un PC la nuit dernière sur une application de formulaires de Windows (C#) dans VS2005 et n'ai reçu aucune exception. Cependant, quand je l'ai essayé encore aujourd'hui dans VS2008, il a jeté une exception quand j'ai supprimé le fichier de configuration et ai couru l'exécutable. –

1

System.Configuration devrait faire tout ce travail pour vous. Il ne devrait pas être nécessaire de charger manuellement un fichier de configuration.