191 votes

AppSettings obtient la valeur du fichier .config

Je ne suis pas en mesure d'accéder aux valeurs du fichier de configuration.

 Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var clientsFilePath = config.AppSettings.Settings["ClientsFilePath"].Value; 
// the second line gets a NullReferenceException
 

Fichier .config :

 <?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <!-- ... -->
    <add key="ClientsFilePath" value="filepath"/>
    <!-- ... -->
  </appSettings>
</configuration>
 

Avez-vous une suggestion que dois-je faire?

382voto

Adam Points 5216

Cela fonctionne pour moi:

 string value = System.Configuration.ConfigurationManager.AppSettings[key];
 

21voto

dtsg Points 2062

Essayez ceci:

 string filePath = ConfigurationManager.AppSettings["ClientsFilePath"];
 

8voto

Kkloe Points 64

J'utilise:

     ExeConfigurationFileMap configMap = new ExeConfigurationFileMap();
    //configMap.ExeConfigFilename = @"d:\test\justAConfigFile.config.whateverYouLikeExtension";
    configMap.ExeConfigFilename = AppDomain.CurrentDomain.BaseDirectory + ServiceConstants.FILE_SETTING;
    Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
    value1 = System.Configuration.ConfigurationManager.AppSettings["NewKey0"];
    value2 = config.AppSettings.Settings["NewKey0"].Value;
    value3 = ConfigurationManager.AppSettings["NewKey0"];
 

valeur1 = ... et valeur3 = ... donne null et valeur2 = ... fonctionne

Ensuite, j'ai décidé de remplacer l'app.config interne par:

 // Note works in service but not in wpf
AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", @"d:\test\justAConfigFile.config.whateverYouLikeExtension");
ConfigurationManager.RefreshSection("appSettings");

string value = ConfigurationManager.AppSettings["NewKey0"];
 

Utilisation de VS2012 .net 4

0voto

BCA Points 369

Mon test simple a également échoué, en suivant les conseils des autres réponses ici - jusqu'à ce que je réalise que le fichier de configuration que j'ai ajouté à mon application de bureau porte le nom "App1.config". Je l'ai renommé "App.config" et tout a immédiatement fonctionné comme il se doit.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X