Wie Hinzufügen Einstellungen Benutzerdefinierte Konfiguration für eine (ASP)
Seit seiner Veröffentlichung, ASP.NET-Anwendungen und Komponenten in die Datei web.config sahen sie müssen alle Einstellungen zu laden, funktionieren. Allerdings, Flexibilität und Robustheit zu einer Anwendung oder Komponente hinzuzufügen benutzerdefinierte Einstellungen hinzuzufügen, ist nicht so einfach wie die meisten mögen. Dieser Artikel zeigt Ihnen, wie die notwendigen Klassen schreiben XML-Konfigurationselemente zu handhaben und die Einstellungen verwenden sie im Code enthalten.
Das Framework bietet eine Vielzahl von Einstellungen, die innerhalb web.config konfiguriert werden können, um das Verhalten von einem oder mehreren Einbauten innerhalb der Anwendung zu modifizieren. Für einige Entwickler, mit den Einstellungen, die von .NET Framework allein kleben ausreichend. Aber viele mehr Entwickler finden sie eine breitere Reihe von Einstellungen steuern müssen - entweder für Komponenten (geschrieben von sich oder einem Dritten) oder einfach eine Reihe von Werten finden sie sich während ihrer Anwendung.
Die Datei web.config ermöglicht es Ihnen, benutzerdefinierte Einstellungen mit der einzustellen
Schlüssel / Wert-Einstellungen können sicherlich hilfreich sein, in vielen Fällen aber
Zum Glück ermöglicht Microsoft Entwickler Klassen zu schreiben, die programmatischen Zugriff auf benutzerdefinierte Konfigurationseinstellungen innerhalb web.config enthalten hinzufügen.
Der Konfigurationsabschnitt
Ein Konfigurationsabschnitt aller erforderlichen Einstellungen nicht innerhalb der enthaltenen
Die Konfiguration als ein Beispiel in dieser Übung verwendet wird, ist eine Komponente, die RSS-Feeds oder Atom abruft. Es macht keinen Parsing tun, als das sprengt den Rahmen dieses Tutorials ist. Statt hart, um die Liste der Feeds Codierung abzurufen, sieht die Komponente seiner Konfiguration die Namen und URLs der RSS-Feeds enthalten abzurufen. Die Komponente wird FeedRetriever genannt, und die gewünschte XML-Struktur seiner Konfiguration sieht wie folgt aus:
Diese
Die obige Konfiguration ist einfach. Das
Das Schreiben der Konfigurations Handler
Klassen basierend auf Configuration repräsentieren einzelne Elemente; es ist der Baustein eines Konfigurationsabschnitt. Typen, die aus Configuration ableiten einfach darstellen Elemente, die mehr als eine Art von Element enthalten. Von der Konfiguration oben aufgeführten die
Stellvertretend für die Element
Sie werden mit dem Start
Jedes Configurationelement-Objekt fungiert als Indexer für seine interne Sammlung von Immobilien-Werte. Es ist diese innere Sammlung, zusammen mit .NET Attributen, die Ihnen die zur Karte ermöglicht
Der folgende Code ist der vollständige Code für die FeedElement Klasse:
Die Configuration Klasse dient als Indexer zu einer darunter liegenden Sammlung von Konfigurationseigenschaften (daher die Indexer Notation dieses [keyValue]). Durch die Verwendung der dieses Schlüsselwort und den Zugriff auf die zugrunde liegenden Immobilie mit einem String-Taste können Sie den Wert der Eigenschaft erhalten und einstellen, ohne ein eigenes Feld, um diese Daten zu enthalten. Die zugrunde liegende Immobilie Sammlung speichert Daten als Typ Object; Daher müssen Sie den Wert als den entsprechenden Typ umwandeln, wenn Sie mit ihm etwas tun wollen.
Es gibt zwei mögliche Abhilfen für dieses Problem. Der erste Ansatz ändert den regulären Ausdruck leere Saiten zu ermöglichen. Der zweite Ansatz weist auf die Eigenschaft einen Standardwert. Es spielt keine Rolle dieser besonderen Fall in. Selbst bei einem Standardwert ist das URL-Attribut noch ein erforderliches Attribut in der
Es gibt mehrere andere Validator Attribute im System.Configuration Namespace Daten zu Eigenschaften zugewiesen zu validieren und die XML-Attribute die in der Umgebung. Die folgende Liste zeigt alle der Validator Attribute innerhalb des System.Configuration Namespace:
- CallbackValidatorAttribute - Stellt eine Verbindung zwischen einem CallbackValidator Objekt und dem Code zu validieren - erlaubt
dynamische Validierung für einen Konfigurationswert. - IntegerValidatorAttribute - Test prüft unter Verwendung eines IntegerValidator Objekt zu bestimmen, ob der Konfigurationswert innerhalb oder außerhalb eines bestimmten Bereichs fällt.
- LongValidatorAttribute - Test prüft unter Verwendung eines LongValidator Objekt zu bestimmen, ob der Konfigurationswert innerhalb oder außerhalb eines bestimmten Bereichs fällt.
- PositiveTimeSpanValidatorAttribute - Dieser Test prüft mit einem PositiveTimeSpanValidator Objekt für positiven Span Konfigurationswerte.
- RegexStringValidatorAttribute - Test prüft unter Verwendung eines RegexStringValidator Objekt zu bestimmen, ob der Konfigurationswert auf den regulären Ausdruck haftet.
- StringValidatorAttribute - Dieser Test prüft mit einem StringValidator Objekt der Konfigurationswert bestimmte Kriterien erfüllt, um sicherzustellen, - wie String-Länge und ungültige Zeichen.
- SubclassTypeValidatorAttribute - Test prüft unter Verwendung eines SubclassTypeValidator Objekts zu bestimmen, ob der Konfigurationswert einer gegebenen Art ableitet.
- TimeSpanValidatorAttribute - die Überprüfung eines Objekts mit TimeSpanValidator zu bestimmen, ob der Konfigurationswert fällt innerhalb oder außerhalb eines bestimmten Bereichs.
Mit Ausnahme der CallbackValidatorAttribute, Sie haben keine entsprechende Validierer-Objekte erstellen in Verbindung mit den Validator Attribute zu verwenden. Die .NET-Laufzeit erstellt die entsprechenden Validator Objekte für Sie, und die Attribute enthalten die benötigten Parameter die Validator-Objekte zu konfigurieren.
Dieses kleine Stück Code ist alles, was erforderlich ist, programmatisch einzelne darzustellen
Schreiben einer Elementsammlung Klasse
Die XML-Darstellung der
- CreateNewElement () - Erstellt ein neues Configurationelement-Objekt (FeedElement in diesem
Fall). - GetElementKey () - Liefert den Elementschlüssel für ein bestimmtes Konfigurationselement (das
Name-Eigenschaft von FeedElement Objekten in diesem Fall).
Mit dem im Verstand, in den vollständigen Code für die FeedElementCollection Klasse unter:
- AddItemName - Legt den Namen des
Konfigurationselement. Beispielsweise,
Setze diese als „Futter“ erfordern würde, dieElemente in der
Konfiguration geändert werden, um. - ClearItemsName - Legt den Namen des
Konfigurationselement (gebraucht
alle Elemente aus der Sammlung löschen). - RemoveItemName - Legt den Namen für die
Konfigurationselement (gebraucht
ein Element aus der Sammlung) zu entfernen.
Werden diese benannte Parameter leer Vorgaben sie
Das Schreiben der FeedRetreiverSection Klasse
Die letzte Klasse, die so genannte FeedRetrieverSection, leitet sich von Configuration und stellt die
Ändern web.config
Mit der Konfiguration Handler abgeschlossen ist, können Sie die entsprechenden Elemente zu web.config hinzufügen. Das
- Name - Der Name des Konfigurationsabschnittselement. In diesem Fall ist der Name feedRetriever.
- Typ - Der qualifizierte Name der Klasse mit dem Abschnitt verbunden ist, und, falls erforderlich,
der Name der Assembly die Klasse befindet sich in. In diesem Fall ist der qualifizierte Name
FeedRetriever.Configuration.FeedRetrieverSection ist. Wenn es befindet sich in einem separaten
Anordnung würde das type-Attribut einen Wert von „FeedRetriever.Configuration.FeedRetrieverSection hat,
", woher ist der Name der Versammlung
ohne die spitzen Klammern.
Jetzt ist Ihre Anwendung ordnungsgemäß innerhalb der enthaltenen verwenden, um die FeedRetrieverSection, FeedElementCollection und FeedElement Klassen konfiguriert Sie programmatischen Zugriff auf die benutzerdefinierten Einstellungen zu gewähren
Zugriff auf Konfigurationsdaten von-Code
Der System.Configuration Namespace enthält eine statische Klasse namens Konfigurationsmanager. Wenn Sie die
Die GetSection () Methode gibt einen Wert vom Typ Objekt, so muß sie gegossen wird, unabhängig von der Art des Handler für diesen Abschnitt ist. Dieser Code ruft den Abschnitt mit dem Namen feedRetriever und wirft das Ergebnis als FeedRetrieverSection. Sobald Sie das Objekt haben, können Sie die Konfigurationsdaten zugreifen programmatisch starten.
Um Ihnen eine Vorstellung davon, wie die Konfigurationseinstellungen können in Ihrer Komponente oder Anwendung verwendet werden, der folgende Code ist eine sehr einfache Implementierung der FeedRetriever Komponente.
Sobald Sie den Abschnittshandler mit GetSection () abrufen, haben Sie vollen Zugriff auf Objekte aus Ihren Handler-Klassen erstellt. Die erste Zeile der GetFeeds () ist eine für jede Schleife, die durch alle FeedElement Objekte enthalten sind, mit dem Objekt FeedElementCollection Schleifen durch die Beschickungen Eigenschaft zurückgegeben. Dies ermöglicht Ihnen den direkten Zugriff auf diese FeedElement Objekte - macht es einfach, jeden Feed Name, URL für den Zugriff auf und die Cache-Einstellungen.
Während jeder Iteration der Schleife macht es das Verfahren eine Anfrage der URL-Eigenschaft FeedElement Objekts verwenden. Wenn die Anforderung führt zu einem Erfolg werden die Feed-Daten abgerufen und in den Variablen gespeichert feeddata. Dann prüft der Code des Cache-Eigenschaft des FeedElement Objekts zu bestimmen, ob das Futter cachen. die den Feed Das Caching beinhaltet einen Dateinamen konstruieren, indem Sie die Namenseigenschaft des FeedElement Objekt und das aktuelle Datum und die Uhrzeit. Dann wird ein Streamwriter-Objekt erstellt die Datei und schreibt die Feed-Daten zu.
Wie Sie sehen können, ist die Konfigurationsabschnitt mit Handler-Klassen Schlüssel zum Abrufen und benutzerdefinierten Einstellungen in web.config wohnen. Es erfordert sicherlich mehr Zeit und Aufwand für Sie, aber es macht auf jeden Fall Ihre Anwendung oder Komponente viel einfacher für sich selbst und andere Entwickler zu konfigurieren.
- Folge uns auf Twitter. oder abonnieren Sie den Nettuts + RSS-Feed für die besten Web-Entwicklung Tutorials im Internet.