App.Config neu laden

  • WPF

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von aendue.

    App.Config neu laden

    Hallo, ich habe einen kleinen Dienst geschrieben, der einige Einstellungen in der App.config enthält. Das laden der Settings ist kein Problem, bloß wenn ich die XML Datei, welche die Settings enthält, verändere, werden die geänderten Settings nicht neu geladen.

    Meine app.config

    XML-Quellcode

    1. <?xml version="1.0" encoding="utf-8" ?>
    2. <configuration>
    3. <appSettings>
    4. <add key="Url" value="https://test.de" />
    5. <add key="Liste" value="Verwaltung" />
    6. <add key="SMTPServer" value="gmail.com" />
    7. <add key="SMTPPort" value="25" />
    8. <add key="SMTPUser" value="aendue@gmail.com" />
    9. <add key="SMTPPassword" value="************" />
    10. <add key="Empfaenger" value="aendue@gmail.com" />
    11. </appSettings>
    12. </configuration>


    Hier mein VB Code:

    Quellcode

    1. Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
    2. Dim sectionName As String = "appSettings"
    3. config.Save(ConfigurationSaveMode.Modified)
    4. ConfigurationManager.RefreshSection(sectionName)
    5. url = ConfigurationManager.AppSettings("Url")
    6. splist = ConfigurationManager.AppSettings("Liste")
    7. SMTPServer = ConfigurationManager.AppSettings("SMTPServer")
    8. SMTPPort = ConfigurationManager.AppSettings("SMTPPort")
    9. SMTPUser = ConfigurationManager.AppSettings("SMTPUser")
    10. SMTPPassword = ConfigurationManager.AppSettings("SMTPPassword")
    11. recipient = ConfigurationManager.AppSettings("Empfaenger")


    Wenn ich da XML Datei nun verändere, zb. die URL, wird das nicht durch ConfigurationManager.RefreshSection(sectionName) neu geladen.

    Wo könnte mein Fehler sein?

    ErfinderDesRades schrieb:

    ich hab noch nie diesen komischen ConfigurationManager benutzt. Ich benutze immer die Settings

    Du vergleichst Äpfel mit Birnen. App.config liegt im Programmverzeichnis auf welches ein Benutzer für normal keine Zugriffsrechte hat. Zudem ist dieses Verzeichnis nicht an ein Benutzerprofil gebunden. Die Settings Datei liegt im AppData Verzeichnis, ist an das Profil gebunden und der Benutzer hat Zugriff darauf. Deshalb wird diese verwendet um Einstellungen des Benutzers zu speichern. Hingegen die App.config wird verwendet um das Programm selbst zu konfigurieren. Zum Beispiel um gewisse Komponenten des Frameworks zu konfigurieren (geht mit den Settings gar nicht - nur mit App.config/Web.config/Machine.config). Oder auch üblich, Connectionstrings zu speichern. Weshalb sollte eine Applikation solch Einstellungen im Benutzerprofil speichern. Solch Einstellungen sind dem Administrator vorbehalten und gehen den Benutzer nix an. Der Sinn und zweck ist einfach ein anderer. Davon mal abgesehen, dass die App/Web/...config dazu gedacht ist einmal etwas per Texteditor zu speichern und das nicht über den Programmcode zu aktualisieren.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Wie dem auch sei - ich fand jedenfalls jetzt die Config-Datei, die zur Debug-Zeit die Settings meines _Test - Projektes beinhaltet unter folgendem Pfad:
    C:\Users\Admin\AppData\Local\_Tests\_Tests.vshost.exe_Url_oji0adiazt3d5wrs4g4crc0eik1td0dq\1.0.0.0\user.config

    Application.LocalUserAppData hingegen ergibt diesen Pfad:
    C:\Users\Admin\AppData\Local\_Tests\_Tests\1.0.0.0
    Aber da ist keine Config drin.

    Mit kompilieren unter Release hab ich noch nicht probiert - aber wenn das eh Birnen sind...
    So, ich hab mir den Pfad der App.config ausgeben lassen mittels:

    path = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).FilePath

    Es stellte sich heraus, das es im gleichen Ordner wie die exe liegt und My-Service.exe.config heißt.

    Danke für die Hilfe