Lecture d’une clé à partir de Web.Config à l’aide de ConfigurationManager

J’essaie de lire les clés du fichier Web.config dans un calque différent de celui de la couche Web (même solution)

Voici ce que j’essaye:

 ssortingng userName = System.Configuration.ConfigurationManager.AppSettings["PFUserName"]; ssortingng password = System.Configuration.ConfigurationManager.AppSettings["PFPassWord"]; 

Et voici mes appSettings dans le fichier Web.config :

  ....     ....  

Lorsque je débogue le code, le username et le password sont simplement null , donc ils n’obtiennent pas la valeur des clés.

Qu’est-ce que je fais mal pour lire ces valeurs?

Essayez plutôt d’utiliser la classe WebConfigurationManager. Par exemple:

 ssortingng userName = WebConfigurationManager.AppSettings["PFUserName"] 
  var url = ConfigurationManager.AppSettings["ServiceProviderUrl"]; 

J’ai trouvé cette solution très utile . Il utilise DynamicObject C # 4.0 pour envelopper le ConfigurationManager. Donc, au lieu d’accéder à des valeurs comme celles-ci:

  WebConfigurationManager.AppSettings["PFUserName"] 

vous y accédez en tant que propriété:

 dynamic appSettings = new AppSettingsWrapper(); Console.WriteLine(appSettings.PFUserName); 

EDIT : Ajouter un extrait de code au cas où le lien serait périmé:

 public class AppSettingsWrapper : DynamicObject { private NameValueCollection _items; public AppSettingsWrapper() { _items = ConfigurationManager.AppSettings; } public override bool TryGetMember(GetMemberBinder binder, out object result) { result = _items[binder.Name]; return result != null; } } 

Si l’appelant est un autre projet, vous devez écrire la configuration dans le projet appelant pas l’appelé.

Ce problème se produit si ce projet est utilisé par un autre projet. Assurez-vous de copier les clés de configuration de l’application sur le fichier app.config ou web.config du projet parent.

Vous pouvez également essayer cette ligne pour obtenir la valeur de app.config fichier app.config .

 var strName= ConfigurationManager.AppSettings["ssortingngName"]; 

Full Path car c’est

 System.Configuration.ConfigurationManager.AppSettings["KeyName"] 

Désolé je n’ai pas testé ceci mais je pense que c’est fait comme ceci:

 var filemap = new System.Configuration.ExeConfigurationFileMap(); System.Configuration.Configuration config = System.Configuration.ConfigurationManager.OpenMappedExeConfiguration(filemap, System.Configuration.ConfigurationUserLevel.None); //usage: config.AppSettings["xxx"]