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?
Essayez plutôt d'utiliser la classe WebConfigurationManager. Par exemple:
string 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 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;
}
}
Si l'appelant est un autre projet, vous devez écrire la configuration dans le projet appelant et non celui appelé.
Il y aura deux fichiers Web.config. Je pense que vous avez peut-être confondu avec ces deux fichiers.
Vérifiez cette 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
chemin complet pour cela
System.Configuration.ConfigurationManager.AppSettings["KeyName"]
Vous pouvez aussi essayer cette ligne pour obtenir la valeur de chaîne du fichier app.config
.
var strName= ConfigurationManager.AppSettings["stringName"];
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.