Wie man benutzerdefinierte Web.config-Abschnitte in ASP.NET definiert

Bei der Entwicklung von Webanwendungen treten häufig Situationen auf, in denen Sie Konfigurationseinstellungen verwalten müssen, die in verschiedenen Umgebungen variieren können. Dies wird zunehmend komplexer, wenn Ihre Anwendung kooperative Einstellungen erfordert, die zusammen geändert werden müssen. Um dies zu überwinden, liegt eine gute Lösung darin, benutzerdefinierte web.config-Abschnitte zu definieren. Dieser Leitfaden erklärt, wie Sie diese benutzerdefinierten Abschnitte zusammen mit Attributen und untergeordneten Elementen für eine effektive Konfigurationsverwaltung erstellen.

Verständnis der benutzerdefinierten Web.config-Abschnitte

Standardmäßig nutzen Webanwendungen einfache Schlüssel-Wert-Paare für Konfigurationseinstellungen. Allerdings wird es entscheidend, die Klarheit zu erhalten, wenn die Werte miteinander verbunden sind oder wenn sich die Konfigurationen je nach Umgebung ändern müssen, wenn Ihre Anwendung wächst. Benutzerdefinierte Abschnitte ermöglichen es Ihnen, verwandte Einstellungen zu gruppieren, was die Verwaltung und das Verständnis erleichtert.

Schritt-für-Schritt-Anleitung zur Erstellung benutzerdefinierter Konfigurationsabschnitte

1. Definieren Sie den Konfigurationsabschnitt

Um einen benutzerdefinierten Konfigurationsabschnitt zu erstellen, müssen Sie eine neue Klasse in Ihrer ASP.NET-Anwendung mit der Basisklasse ConfigurationSection definieren. Nachfolgend finden Sie ein Beispiel für einen benutzerdefinierten Konfigurationsabschnitt, der den für Ihre Anwendung erlaubten Speicherplatz für Benutzer definiert.

Beispiel: MailCenterConfiguration.cs

namespace Ani {
    public sealed class MailCenterConfiguration : ConfigurationSection {
        [ConfigurationProperty("userDiskSpace", IsRequired = true)]
        [IntegerValidator(MinValue = 0, MaxValue = 1000000)]
        public int UserDiskSpace {
            get { return (int)base["userDiskSpace"]; }
            set { base["userDiskSpace"] = value; }
        }
    }
}

Aktualisieren Sie Web.config

Sie müssen auch Ihren benutzerdefinierten Konfigurationsabschnitt in web.config registrieren, wie unten gezeigt:

<configSections>
    <!-- Mailcenter-Konfigurationsdatei -->
    <section name="mailCenter" type="Ani.MailCenterConfiguration" requirePermission="false"/>
</configSections>
...
<mailCenter userDiskSpace="25000">
    <mail host="my.hostname.com" port="366" />
</mailCenter>

2. Implementieren von untergeordneten Elementen

Es ist häufig notwendig, untergeordnete Elemente innerhalb Ihres benutzerdefinierten Konfigurationsabschnitts zu definieren. Zum Beispiel kann ein mail-Element separat definiert werden, das zusätzliche Eigenschaften zu den Mail-Einstellungen enthält.

Verbesserung von MailCenterConfiguration.cs

Fügen Sie die untergeordnete Klasse MailElement hinzu, um mail-spezifische Einstellungen zu verarbeiten:

public sealed class MailCenterConfiguration : ConfigurationSection {
    [ConfigurationProperty("mail", IsRequired = true)]
    public MailElement Mail {
        get { return (MailElement)base["mail"]; }
        set { base["mail"] = value; }
    }

    public class MailElement : ConfigurationElement {
        [ConfigurationProperty("host", IsRequired = true)]
        public string Host {
            get { return (string)base["host"]; }
            set { base["host"] = value; }
        }

        [ConfigurationProperty("port", IsRequired = true)]
        [IntegerValidator(MinValue = 0, MaxValue = 65535)]
        public int Port {
            get { return (int)base["port"]; }
            set { base["port"] = value; }
        }
    }
}

3. Zugriff auf Konfigurationswerte

Sobald Ihre Konfigurationsabschnitte eingerichtet sind, ist es einfach, sie in Ihrer Anwendung abzurufen. Sie können Ihr Konfigurationsobjekt instanziieren, das automatisch die Werte aus web.config liest.

Abruf-Code-Beispiel

So greifen Sie auf die Eigenschaften von MailCenterConfiguration zu:

private static MailCenterConfiguration instance = null;
public static MailCenterConfiguration Instance {
    get {
        if (instance == null) {
            instance = (MailCenterConfiguration)WebConfigurationManager.GetSection("mailCenter");
        }
        return instance;
    }
}

4. Implementierung von Gültigkeitsprüfungen

Um sicherzustellen, dass Ihre Anwendung ohne Probleme aufgrund ungültiger Konfigurationsdaten startet, sollten Sie Ihre Konfiguration während der Anwendungsstartphase laden. Auf diese Weise sehen Sie sofort bei einem Fehler in der Konfigurationsgültigkeit eine Ausnahme, anstatt später einen Laufzeitfehler.

Global.asax-Beispiel

protected void Application_Start(object sender, EventArgs e) {
    MailCenterConfiguration.Instance;
}

Fazit

Die Definition von benutzerdefinierten web.config-Abschnitten in Ihren ASP.NET-Anwendungen kann Ihre Konfigurationsverwaltung erheblich verbessern, indem Sie verwandte Einstellungen gruppieren, Einschränkungen hinzufügen und die Klarheit zwischen verschiedenen Umgebungen sicherstellen. Durch das Befolgen der in diesem Leitfaden beschriebenen Schritte werden Sie in der Lage sein, einen strukturierten und robusten Ansatz zur Konfiguration zu schaffen, der mit den Anforderungen Ihrer Anwendung wächst.

Ob es um die Verwaltung von Festplattenspeicher oder um andere kooperative Einstellungen geht, die Nutzung von benutzerdefinierten Konfigurationsabschnitten wird den Bedürfnissen Ihrer Anwendungen besser gerecht.