Pergunta

Eu recentemente mudou-se para o Vista x64, e, de repente, meu bloco appSettings machine.config não está sendo lido por qualquer conjuntos .NET.

Logo após configSections, e antes configProtectedData em C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG \ machine.config, eu tenho:

<appSettings>
    <add key="foo" value="blah"/>
</appSettings>
<system.runtime.remoting>
    <customErrors mode="Off"/>
</system.runtime.remoting>

Tinha que salvá-lo, executando Notepad ++ como um administrador, porque está bloqueado outra forma, provavelmente por boas razões. Executando o seguinte código no SnippetCompiler ou VS .NET 2008:

    foreach(var s in ConfigurationManager.AppSettings.AllKeys)
    {
        Console.WriteLine(s);   
    }

    AppSettingsReader asr = new AppSettingsReader();

    Console.WriteLine(asr.GetValue("foo", typeof(string)));

escreve sem chaves e falha com a seguinte exceção:

---
The following error occurred while executing the snippet:
System.InvalidOperationException: The key 'foo' does not exist in the appSettings configuration section.
    at System.Configuration.AppSettingsReader.GetValue(String key, Type type)
    at MyClass.RunSnippet()
    at MyClass.Main()
---

O aplicativo I usos gravação machine.config como recurso para descobrir qual o ambiente de um usuário deve ser executado em se ele não pode ser encontrada no app.config, então eu gostaria de evitar ter que reescrever meu aplicativo para descobrir algo que deveria estar trabalhando o mesmo que ele fez em 2000 e XP.

Foi útil?

Solução

Resolvido-lo com a seguinte linha de código:

ConfigurationManager.OpenMachineConfiguration().FilePath

que retornou:

C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Config\machine.config

em vez de:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config

Esqueceu eu estou usando 64 bits agora. Adicionando a seção appSettings no arquivo de configuração adequada resolveu o problema.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top