AppSettings получить значение от.конфигурационный файл
Я не могу получить доступ к значениям в файле конфигурации.
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var clientsFilePath = config.AppSettings.Settings["ClientsFilePath"].Value;
// the second line gets a NullReferenceException
.конфигурационный файл:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<!-- ... -->
<add key="ClientsFilePath" value="filepath"/>
<!-- ... -->
</appSettings>
</configuration>
есть ли у вас какие-либо предложения, что мне делать?
12 ответов:
ответ, который дал dtsg работает:
string filePath = ConfigurationManager.AppSettings["ClientsFilePath"];но, вам нужно добавить ссылка на сборку до
система.Конфигурация
иди к своему Обозреватель и щелкните правой кнопкой мыши по ссылкам и выберите добавить ссылку. Выберите сборки вкладка и поиск конфигурация.
здесь пример мой приложение.конфигурации:
<?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>который вы можете получить следующим образом:
string adminName = ConfigurationManager.AppSettings["AdminName"];
Читать Из Конфига :
вам нужно будет добавить ссылку на Config
- откройте "Свойства" в вашем проекте
- перейдите на вкладку "Параметры"
- добавить "имя" и "значение"
- получить значение с помощью следующего кода :
string value = Properties.Settings.Default.keyname;сохранить в Config:
Properties.Settings.Default.keyName = value; Properties.Settings.Default.Save();
Я использую:
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"];здесь value1 = ... и value3 = ... дает null и value2 = ... работает
тогда я решил заменить внутреннее приложение.конфигурация с:
// 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"];использование VS2012 .net 4
некоторые из ответов, кажется, немного ИМО вот мое мнение около 2016
<add key="ClientsFilePath" value="filepath"/>убедится
System.Configurationссылка.вопрос задает стоимостью к разделу "appsettings"ключ
который, безусловно, должен быть
string yourKeyValue = ConfigurationManager.AppSettings["ClientsFilePath"] //yourKeyValue should hold on the HEAP "filepath"вот поворот, в котором вы можете сгруппировать вместе значения (не для этого вопроса)
var emails = ConfigurationManager.AppSettings[ConfigurationManager.AppSettings["Environment"] + "_Emails"];
emailsбудет стоимость Ключ Среды + "_Emails"example : [email protected];[email protected];
для веб-приложения я обычно пишу этот метод и просто вызываю его с помощью ключа.
private String GetConfigValue(String key) { return System.Web.Configuration.WebConfigurationManager.AppSettings[key].ToString(); }
в приложении / web .файл конфигурации установите следующую конфигурацию:
<configuration> <appSettings> <add key="NameForTheKey" value="ValueForThisKey" /> ... ... </appSettings> ... ... </configuration>тогда вы можете получить доступ к этому в своем коде, поставив в этой строке:
string myVar = System.Configuration.ConfigurationManager.AppSettings["NameForTheKey"];* обратите внимание, что эта работа отлично подходит для .net4.5.x и .net4.6.x; но не работает для .net core. С уважением: Рафаэль
видите, я сделал то, что, как я думал, было очевидным:
string filePath = ConfigurationManager.AppSettings.GetValues("ClientsFilePath").ToString();при компиляции он всегда возвращает null.
это однако (сверху) работает:
string filePath = ConfigurationManager.AppSettings["ClientsFilePath"];
возвращаясь к этому после долгого времени...
учитывая кончину ConfigurationManager, для тех, кто все еще ищет ответ на эту попытку (например):
AppSettingsReader appsettingsreader = new AppSettingsReader(); string timeAsString = (string)(new AppSettingsReader().GetValue("Service.Instance.Trigger.Time", typeof(string)));Требует Система.Конфигурация конечно.
(отредактировал код на то, что на самом деле работает и проще читать)
мой простой тест также не удался, следуя советам других ответов здесь-пока я не понял, что файл конфигурации, который я добавил в свое настольное приложение, получил имя "App1.конфигурация." Я переименовал его в "приложение.конфиг" и все сразу сработало как надо.
вы можете просто ввести:
string filePath = Sysem.Configuration.ConfigurationManager.AppSettings[key.ToString()];, потому что
key- это объект иAppSettingsпринимает строку

Comments