2016-04-15 3 views
0

Ich habe diesen Code, um alle Schlüssel/Wert aus einer benutzerdefinierten .config Datei zu erhalten, wo ich den Pfad übergeben, aber der Code ruft 0 Schlüssel, ich verstehe nicht warum .Code ruft keinen Schlüssel aus .config-Datei C#

Hier ist der Code:

public void UpdateService(string FilePathOld, string FilePathNew) 
{ 
    string[] Keys = { "SleepTimeInSeconds", "LogCleanInMinutes", "LogFileSize", "SqlTrans", "RemoteType", "DebugMode", "SleepError", "LogLevel", "LogSqlClient", "LogFile", "DebugRemote" }; 

    Dictionary<string, string> Old = new Dictionary<string, string>(); 
    Dictionary<string, string> New = new Dictionary<string, string>(); 

    ExeConfigurationFileMap configOld = new ExeConfigurationFileMap(); 
    configOld.ExeConfigFilename = FilePathOld; 

    Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configOld, ConfigurationUserLevel.None); 

    ExeConfigurationFileMap configNew = new ExeConfigurationFileMap(); 
    configNew.ExeConfigFilename = FilePathNew; 

    Configuration config2 = ConfigurationManager.OpenMappedExeConfiguration(configNew, ConfigurationUserLevel.None); 

    KeyValueConfigurationCollection settings = config.AppSettings.Settings; 
    Old = settings.AllKeys.ToDictionary(key => key, key => settings[key].Value); 

    KeyValueConfigurationCollection settings2 = config2.AppSettings.Settings; 
    New = settings2.AllKeys.ToDictionary(key => key, key => settings2[key].Value); 
} 
+1

AppSettings oder Usersettings oder SomeOtherSettings? Prüfen Sie unter dem richtigen Knoten/Einstellungsnamen? Wenn möglich, zeigen Sie bitte auch die Konfigurationsdatei an. – touchofevil

+0

Ich möchte alle Einstellungen im Abschnitt appSettings abrufen. Hier ist die Konfigurationsdatei: https://drive.google.com/file/d/0ByZb1KP9efohTDVhZXp1VkNBOEk/view?usp=sharing –

+0

@touchofevil In den Code ich nicht angeben, welche Abschnitt möchte ich. Könnte es das sein? –

Antwort

0

Sie Schlüsselwert von web.config auf Ihrer Seite wie ..

ConfigurationManager.AppSettings [ "SleepTimeInSeconds"] zugreifen können;

hier „SleepTimeInSeconds“ ist Ihr Schlüssel & Sie erhalten Wert mit Ihrem Schlüsselnamen

Sie für alle Schlüssel diesen Code schreiben ...

+0

, aber ich muss alle Schlüssel und Werte von der .config zu einem Wörterbuch wie ich oben abholen. aber der Code gibt keinen Schlüssel oder Wert zurück –

+0

Ich verstehe das, aber ich kann nicht so weitergehen, weil ich nicht alle Schlüssel Namen in der Datei wissen kann, sie können sogar anders sein. Ich muss alle Schlüssel zurückgeben, die irgendeinen Schlüssel spezifizieren –

+0

Was ist mit ConfigurationManager.appSettings.Keys erhält alle Schlüssel von appSettings und iteriert alle Schlüssel und benutzt sie. –