Neuladen der .NET Konfigurationsdatei

8

Ich muss die Konfigurationsdatei neu laden, nachdem ich sie geändert habe. Wie kann dies mit appdomains geschehen? Ein Codebeispiel wäre nützlich.

    
Markus 17.03.2010, 19:35
quelle

5 Antworten

8

ConfigurationManager.RefreshSection funktioniert möglicherweise für Sie.

>     
Fredrik Mörk 17.03.2010 19:53
quelle
7

Nehmen wir an, Sie haben die folgende Konfigurationsdatei:

%Vor%

Lasst uns zuerst den naiven Ansatz ausprobieren. Die folgende Anwendung versucht, den Wert von appSetting namens test einmal pro Sekunde zu erfassen und ihren Wert zu drucken:

%Vor%

Aber leider! Während dies ausgeführt wird, werden Sie feststellen, dass 1 weiterhin gedruckt wird und keine Änderungen übernommen werden.

Wenn Sie Ihren Code auf Folgendes aktualisieren, wird dieses Problem behoben und Änderungen werden immer dann übernommen, wenn Sie sie ändern:

%Vor%     
Jay Sullivan 26.10.2013 19:38
quelle
1

Ja, es ist möglich ... abhängig von WIE Sie auf Ihre Konfigurationsdatei zugreifen.

Wenn Sie sich auf das Standardverhalten verlassen, lautet die Antwort NEIN .

Wenn Sie jedoch über die Eigenschaft static der für Ihr Projekt üblichen Methode auf die Konfiguration zugreifen, ist es möglich, sie erneut zu laden.

Ich habe das Code-Snippet jetzt nicht bei mir, aber ich habe etwas Ähnliches selbst mit einem FileSystemWatcher , um Änderungen in der config -Datei zu erkennen.

Es gibt eine Einschränkung, es funktioniert nur mit Eigenschaften, auf die Sie direkt über Ihren Code zugreifen, die automatische Konfiguration wird nicht neu geladen, wenn Sie so etwas tun.

    
Paulo Santos 17.03.2010 20:00
quelle
1
%Vor%     
UserEsp 25.02.2016 16:30
quelle
0

Ich habe tatsächlich die Lösung für das gegebene Problem gefunden. Im Folgenden finden Sie einige Codezeilen, wie dies möglich ist:

%Vor%

Der entscheidende Punkt hier ist die AppDomainSetup-Klasse, mit der Sie die Eigenschaft configurationfile für die zu erstellende Assembly festlegen können. Jetzt können wir die Konfigurationsdatei "Target_Config.exe.config" auf Änderungen überwachen. Wenn es geändert wird, sollte die oben erstellte Appdomain entladen und dann neu erstellt werden.

    
Markus 17.03.2010 20:24
quelle