Frage

Ich habe vor kurzem umgezogen, um Vista x64 auf, und plötzlich ist mein machine.config appSettings Block nicht durch .NET-Assemblies gelesen werden.

Gleich nach configSections und vor configProtectedData in C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG \ machine.config, die ich habe:

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

Wäre es zu speichern, indem Sie Notepad ++ ausgeführt als Administrator, da es sonst gesperrt ist, wahrscheinlich aus guten Gründen. Das Ausführen des folgenden Code in SnippetCompiler oder VS .NET 2008:

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

    AppSettingsReader asr = new AppSettingsReader();

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

out ohne Schlüssel schreibt und schlägt mit folgenden Ausnahme:

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

Die App Ich schreibe verwendet machine.config als Ausweich, um herauszufinden, welche Umgebung ein Benutzer sollten laufen, wenn sie nicht in der app.config gefunden werden kann, so möchte ich, um zu vermeiden meine Anwendung neu zu schreiben um herauszufinden, etwas, das das gleiche arbeiten sollte, wie es in den Jahren 2000 und XP hat.

War es hilfreich?

Lösung

mit der folgenden Codezeile gelöst:

ConfigurationManager.OpenMachineConfiguration().FilePath

, die zurückgegeben:

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

statt:

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

Passwort Ich bin jetzt mit 64 Bit. Das Hinzufügen des appSettings Abschnitt in der richtigen Konfigurationsdatei wurde das Problem behoben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top