Peter Bucher - Mein Experiment, meine Spielereien, meine Welt...   ·   Stefan Falz   ·   Jürgen Gutsch   ·   Golo Roden   ·   ASP.NET Zone   ·   Microsoft ASP.NET
Willkommen bei ASP.NET Zone. Anmelden | Registrieren | Hilfe

Konfiguration per configSource-Attribut auslagern

Eine web.config- oder app.config-Datei kann mit der Zeit ziemlich gross und unübersichtlich werden.
.NET bietet hierfür aber eine Lösung per configSource-Attribut.

Ein normaler Konfigurationsabschnitt für HttpHandlers sieht so aus:

[…]
<httpHandlers>
    <add verb="GET" path="Download.axd" type="Project.Downloads.DownloadHandlerFactory"/>
</httpHandlers>
[…]

Wenn dieser Teil ausgelagert werden will, reicht dann diese Notation in der web.config:

<httpHandlers configSource="Configuration\HttpHandler.config" />

Die HttpHandler.config in einem Verzeichnis oberhalb des Roots sieht dann bspw. so aus:

<httpHandlers>
    <add verb="GET" path="Download.axd" type="Project.Downloads.DownloadHandlerFactory"/>
</httpHandlers>

Für eigene Konfigurationsabschnitte kann genau gleich vorgegangen werden.
Zusätzlich gibt es da noch die Möglichkeit per restartOnExternalChanges-Attribut das auf false gesetzt ist und innerhalb der <configSections><section …. platziert werden muss, festgelegt werden ob die Applikation neu starten soll wenn die externe Konfigurationsdatei geändert wurde.

Das ist eine gute Möglichkeit per Laufzeit Einstellungen zu wechseln.
Jedoch sollte man abschätzen wie kritisch die Änderungen sind und ob der Zugriff darauf die Applikation in einen undefinierten Zustand bringen könnten.
Um das zu verhindern, müsste ggf. ein Locking-Mechanismus implementiert werden.

Die möglichen Vorteile bei der Nutzung dieser Möglichkeit:

  • Bessere Übersichtlichkeit
  • Ermöglicht einfaches Austauschen von Teilen der Konfiguration (Bspw. Developer- und Productivemaschinen haben verschiedene Connectionstrings)
  • Gibt die Möglichkeit Änderungen während der Laufzeit auszuführen
Veröffentlicht Donnerstag, 22. Januar 2009 19:18 von Peter Bucher

Kommentare

Keine Kommentare
Anonyme Kommentare sind nicht zugelassen