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?
Cela fonctionne pour moi:
string value = System.Configuration.ConfigurationManager.AppSettings[key];
La réponse que Dtsg a donnée fonctionne:
string filePath = ConfigurationManager.AppSettings["ClientsFilePath"];
MAIS, vous devez ajouter un référence d'assemblage à
Configuration du système
Allez à votre explorateur de solution et cliquez avec le bouton droit de la souris sur sur Références et sélectionnez Ajouter une référence . Sélectionnez l'onglet Assemblys et recherchez Configuration .
Voici un exemple de mon App.config :
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<appSettings>
<add key="AdminName" value="My Name"/>
<add key="AdminEMail" value="MyEMailAddress"/>
</appSettings>
</configuration>
Ce que vous pouvez obtenir de la manière suivante:
string adminName = ConfigurationManager.AppSettings["AdminName"];
Essayez ceci:
string filePath = ConfigurationManager.AppSettings["ClientsFilePath"];
Lire à partir de la configuration:
Vous devrez ajouter une référence à Config.
string value = Properties.Settings.Default.keyname;
Enregistrer dans la configuration:
Properties.Settings.Default.keyName = value;
Properties.Settings.Default.Save();
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"];
Où 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
Dans le fichier app/web.config
, définissez la configuration suivante:
<configuration>
<appSettings>
<add key="NameForTheKey" value="ValueForThisKey" />
...
...
</appSettings>
...
...
</configuration>
alors vous pouvez y accéder dans votre code en mettant dans cette ligne:
string myVar = System.Configuration.ConfigurationManager.AppSettings["NameForTheKey"];
* Notez que cela fonctionne bien pour .net4.5.x
et .net4.6.x
; mais ne travaille pas pour .net core
. Cordialement: Rafael
Revenir à celui-ci après un long moment ...
Compte tenu de la disparition de ConfigurationManager, pour ceux qui cherchent encore une réponse à cette tentative (par exemple):
AppSettingsReader appsettingsreader = new AppSettingsReader();
string timeAsString = (string)(new AppSettingsReader().GetValue("Service.Instance.Trigger.Time", typeof(string)));
Nécessite bien sûr System.Configuration.
(Edité le code pour quelque chose qui fonctionne réellement et est plus simple à lire)
Pour une application Web, je vais normalement écrire cette méthode et l'appeler simplement avec la clé.
private String GetConfigValue(String key)
{
return System.Web.Configuration.WebConfigurationManager.AppSettings[key].ToString();
}
Certaines réponses semblent un peu en retrait IMO Voici ce que je pense vers 2016
<add key="ClientsFilePath" value="filepath"/>
Assurez-vous que System.Configuration
est référencé.
La question demande valeur d'un appsettings clé
Ce qui devrait certainement être
string yourKeyValue = ConfigurationManager.AppSettings["ClientsFilePath"]
//yourKeyValue should hold on the HEAP "filepath"
Voici une variante dans laquelle vous pouvez regrouper des valeurs (pas pour cette question)
var emails = ConfigurationManager.AppSettings[ConfigurationManager.AppSettings["Environment"] + "_Emails"];
emails
sera la valeur de la clé d'environnement + "_Emails"
example : [email protected];[email protected];
Voir j'ai fait ce que je pensais être la chose évidente était:
string filePath = ConfigurationManager.AppSettings.GetValues("ClientsFilePath").ToString();
Bien que compile, il retourne toujours null.
Cela fonctionne cependant (d'en haut):
string filePath = ConfigurationManager.AppSettings["ClientsFilePath"];
Vous pouvez simplement taper:
string filePath = Sysem.Configuration.ConfigurationManager.AppSettings[key.ToString()];
parce que key
est un objet et AppSettings
prend une chaîne
ConfigurationManager.RefreshSection("appSettings")
string value = System.Configuration.ConfigurationManager.AppSettings[key];
CODE SERA GÉNÉRÉ AUTOMATIQUEMENT
<configuration> <configSections> <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup ..." ... > <section name="XX....Properties.Settings" type="System.Configuration.ClientSettingsSection ..." ... /> </sectionGroup> </configSections> <applicationSettings> <XX....Properties.Settings> <setting name="name" serializeAs="String"> <value>value</value> </setting> <setting name="name2" serializeAs="String"> <value>value2</value> </setting> </XX....Properties.Settings> </applicationSettings> </configuration>
Pour obtenir une valeur
Properties.Settings.Default.Name
OR
Properties.Settings.Default ["name"]
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.