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?
12 answers
string value = System.Configuration.ConfigurationManager.AppSettings[key];
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 .
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"];
Tenta isto:
string filePath = ConfigurationManager.AppSettings["ClientsFilePath"];
Leia Da Configuração:
Tens de adicionar uma referência à configuração
- abrir "Propriedades" no seu projecto
- Vá para a página "Configuração"
- Adicionar "nome " e"valor"
- 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();
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
<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];
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();
}
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
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"];
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)
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.
Pode simplesmente escrever:
string filePath = Sysem.Configuration.ConfigurationManager.AppSettings[key.ToString()];
Porque key
é um objecto e AppSettings
leva uma cadeia de caracteres