c# - read - AppSettings obtêm valor do arquivo.config



configurationmanager appsettings exception (9)

Não consigo acessar valores no arquivo de configuração.

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

arquivo .config :

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <!-- ... -->
    <add key="ClientsFilePath" value="filepath"/>
    <!-- ... -->
  </appSettings>
</configuration>

Você tem alguma sugestão, o que devo fazer?

https://src-bin.com


Answer #1
  1. Abra "Propriedades" no seu projeto
  2. Vá para a aba "Configurações"
  3. Adicionar "nome" e "valor"

CÓDIGO SERÁ GERADO AUTOMATICAMENTE

    <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>

Para obter um valor

Propriedades.Settings.Default.Name

OU

Properties.Settings.Default ["name"]


Answer #2

A resposta que o dtsg deu funciona:

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

MAS, você precisa adicionar uma referência de montagem para

Configuração do sistema

Vá para o Solution Explorer e clique com o botão direito do mouse em References e selecione Add reference . Selecione a guia Montagens e pesquise por Configuração .

Aqui está um exemplo do meu 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>

Que você pode obter da seguinte maneira:

string adminName = ConfigurationManager.AppSettings["AdminName"];

Answer #3

Dê isto:

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

Answer #4

Estou usando:

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

Onde value1 = ... e value3 = ... dá null e value2 = ... funciona

Então decidi substituir o app.config interno por:

// 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 o VS2012 .net 4


Answer #5

Ler da configuração:

Você precisará adicionar uma referência ao Config

  1. Abra "Propriedades" no seu projeto
  2. Vá para a aba "Configurações"
  3. Adicionar "nome" e "valor"
  4. Obtenha valor com o uso do seguinte código:
string value = Properties.Settings.Default.keyname;

Salvar no Config:

Properties.Settings.Default.keyName = value;
Properties.Settings.Default.Save();

Answer #6

Meu teste simples também falhou, seguindo o conselho de outras respostas aqui - até que percebi que o arquivo de configuração que eu adicionei ao meu aplicativo de desktop recebeu o nome "App1.config". Eu renomei para "App.config" e tudo funcionou imediatamente como deveria.


Answer #7

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

private String GetConfigValue(String key)
    {
       return System.Web.Configuration.WebConfigurationManager.AppSettings[key].ToString();
    }

Answer #8

Veja, eu fiz o que eu pensei que era a coisa óbvia era:

string filePath = ConfigurationManager.AppSettings.GetValues("ClientsFilePath").ToString();

Enquanto isso compila, sempre retorna null.

Este no entanto (de cima) funciona:

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

Answer #9

Voltando a este depois de muito tempo ...

Dado o desaparecimento do ConfigurationManager, para quem ainda está procurando uma resposta para esta tentativa (por exemplo):

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

Requer System.Configuration claro.

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





configurationmanager