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>


есть ли у вас какие-либо предложения, что мне делать?

600   12  

12 ответов:

это работает для меня:

string value = System.Configuration.ConfigurationManager.AppSettings[key];

ответ, который дал dtsg работает:

string filePath = ConfigurationManager.AppSettings["ClientsFilePath"];

но, вам нужно добавить ссылка на сборку до

система.Конфигурация

иди к своему Обозреватель и щелкните правой кнопкой мыши по ссылкам и выберите добавить ссылку. Выберите сборки вкладка и поиск конфигурация.

Reference manager

здесь пример мой приложение.конфигурации:

<?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"];

это:

string filePath = ConfigurationManager.AppSettings["ClientsFilePath"];

Читать Из Конфига :

вам нужно будет добавить ссылку на Config

  1. откройте "Свойства" в вашем проекте
  2. перейдите на вкладку "Параметры"
  3. добавить "имя" и "значение"
  4. получить значение с помощью следующего кода :
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

    Ничего не найдено.