web-dev-qa-db-fra.com

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

J'essaie de lire les clés du fichier Web.config dans un autre calque que le calque Web (même solution).

Voici ce que j'essaye:

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

Et voici mon appSettings dans le fichier Web.config:

<configuration>
   ....
   <appSettings>
      <add key="PFUserName" value="myusername"/>
      <add key="PFPassWord" value="mypassword"/>
   </appSettings>
   ....
</configuration>

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

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

268
twal

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

string userName = WebConfigurationManager.AppSettings["PFUserName"]
453
Hector Correa
  var url = ConfigurationManager.AppSettings["ServiceProviderUrl"];
36
yogee

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 celle-ci:

 WebConfigurationManager.AppSettings["PFUserName"]

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

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

EDIT: Ajout d'extrait de code au cas où le lien deviendrait obsolète:

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;
    }
}
6
mateuscb

Si l'appelant est un autre projet, vous devez écrire la configuration dans le projet appelant et non celui appelé.

6
Saber

Il y aura deux fichiers Web.config. Je pense que vous avez peut-être confondu avec ces deux fichiers.

Vérifiez cette image:

click this link and check this image

Dans cette image, vous pouvez voir deux fichiers Web.config. Vous devez ajouter vos constantes à celle qui se trouve dans le dossier du projet et non dans le dossier des vues.

J'espère que cela peut vous aider

2
raja gangadhar

chemin complet pour cela

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

Vous pouvez aussi essayer cette ligne pour obtenir la valeur de chaîne du fichier app.config.

var strName= ConfigurationManager.AppSettings["stringName"];
1
Ram Beer Singh

Ce problème se produit si ce projet est utilisé par un autre projet. Assurez-vous de copier les clés de paramètres d'application dans app.config ou web.config du projet parent.

1
Karthikeyan Muthu