AppSettings obtém o valor de.ficheiro de configuração

não consigo aceder aos valores no ficheiro de configuração.

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var clientsFilePath = config.AppSettings.Settings["ClientsFilePath"].Value; 
// the second line gets a NullReferenceException

.ficheiro de configuração:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <!-- ... -->
    <add key="ClientsFilePath" value="filepath"/>
    <!-- ... -->
  </appSettings>
</configuration>
Tem alguma sugestão do que devo fazer?

Author: KyleMit, 2012-05-26

12 answers

Isto funciona comigo.
string value = System.Configuration.ConfigurationManager.AppSettings[key];
 268
Author: Adam, 2012-05-26 13:30:49

A resposta que o dtsg deu funciona:

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

Mas, tens de adicionar uma referência à

Sistema.Configuração

Vá ao seu Solution Explorer e carregue com o botão direito nas referências e seleccione Adicionar referência . Seleccione a Página conjuntos e procure por configuração .

Reference manager

Aqui está um exemplo da minha aplicação.configuração:
<?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>

Em que podes entrar da seguinte forma:

string adminName = ConfigurationManager.AppSettings["AdminName"];
 44
Author: rotgers, 2015-03-20 13:23:03

Tenta isto:

string filePath = ConfigurationManager.AppSettings["ClientsFilePath"];
 20
Author: dtsg, 2012-05-26 13:51:07

Leia Da Configuração:

Tens de adicionar uma referência à configuração

  1. abrir "Propriedades" no seu projecto
  2. Vá para a página "Configuração"
  3. Adicionar "nome " e"valor"
  4. Obter o valor usando o seguinte código:
string value = Properties.Settings.Default.keyname;

Gravar na configuração:

Properties.Settings.Default.keyName = value;
Properties.Settings.Default.Save();
 13
Author: Masoud Siahkali, 2018-05-29 09:55:02

Estou a usar:

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

Em que valor 1 = ... e valor 3 = ... dá valor nulo e 2 = ... Obras

Depois decidi substituir a aplicação interna.configuração com:
// 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"];

Usando VS2012. net 4

 4
Author: Kkloe, 2014-05-06 10:00:05
Algumas das respostas parecem um pouco erradas. 2016
<add key="ClientsFilePath" value="filepath"/>

Certifica-te que System.Configuration é referenciado.

A questão está a perguntar por valor de uma chave de aplicações

Que certamente deveria ser

  string yourKeyValue = ConfigurationManager.AppSettings["ClientsFilePath"]

  //yourKeyValue should hold on the HEAP  "filepath"

Aqui está uma reviravolta em que você pode agrupar valores (não para esta questão)

var emails = ConfigurationManager.AppSettings[ConfigurationManager.AppSettings["Environment"] + "_Emails"];

emails será o valor da chave de ambiente + "_Emails"

example :   [email protected];[email protected];
 2
Author: Tom Stickel, 2016-06-02 21:42:23

Para aplicação web, eu normalmente vou escrever este método e basta chamá-lo com a chave.

private String GetConfigValue(String key)
    {
       return System.Web.Configuration.WebConfigurationManager.AppSettings[key].ToString();
    }
 2
Author: suulisin, 2017-05-15 08:30:29

Na app / web .ficheiro de configuração define a seguinte configuração:

<configuration>
  <appSettings>
    <add key="NameForTheKey" value="ValueForThisKey" />
    ... 
    ...    
  </appSettings>
...
...
</configuration>

Então pode aceder a isto no seu código colocando nesta linha:

string myVar = System.Configuration.ConfigurationManager.AppSettings["NameForTheKey"];

* Note que este trabalho é bom para. net4. 5. x e. net4. 6. x; mas não funciona para. net core. Cumprimento: Rafael

 2
Author: Rafael Andrs Cspedes Basterio, 2017-05-31 18:55:19
Eu fiz o que achei que era óbvio:
string filePath = ConfigurationManager.AppSettings.GetValues("ClientsFilePath").ToString();

Enquanto isso compila ele sempre retorna nulo.

No entanto, isto (a partir de cima) funciona:

string filePath = ConfigurationManager.AppSettings["ClientsFilePath"];
 1
Author: Steve, 2015-08-06 11:16:50
Voltando a este depois de muito tempo...

Dado o fim do ConfigurationManager, para qualquer um que ainda procura uma resposta para esta tentativa (por exemplo):

AppSettingsReader appsettingsreader = new AppSettingsReader();
string timeAsString = (string)(new AppSettingsReader().GetValue("Service.Instance.Trigger.Time", typeof(string)));

Requer Sistema.Configuração, claro.

(codificou o código para algo que realmente funciona e é mais simples de ler)

 1
Author: Mike Dean, 2018-04-30 14:07:12

Meu teste simples também falhou, seguindo o Conselho das outras respostas aqui--até que eu percebi que o arquivo de configuração que eu adicionei à minha aplicação desktop recebeu o nome "App1.configuracao". Renomeei-o para App.config " e tudo imediatamente funcionou como deveria.

 0
Author: BCA, 2014-08-29 19:11:52

Pode simplesmente escrever:

string filePath = Sysem.Configuration.ConfigurationManager.AppSettings[key.ToString()];

Porque key é um objecto e AppSettings leva uma cadeia de caracteres

 0
Author: Soprano, 2017-11-14 10:11:42