Comment ajouter des paramètres de configuration personnalisés pour un (ASP)
Depuis sa sortie, les applications et les composants ASP.NET se sont tournés vers le fichier web.config pour charger tous les paramètres dont ils ont besoin pour fonctionner. Cependant, en ajoutant des paramètres personnalisés pour ajouter de la flexibilité et la robustesse à une application ou d'un composant est pas aussi simple que la plupart voudraient. Cet article vous apprend comment écrire les classes nécessaires pour gérer les éléments de configuration XML et utiliser les paramètres qu'ils contiennent dans votre code.
Le .NET Framework fournit une grande variété de paramètres qui peuvent être configurés dans web.config pour modifier le comportement d'un ou plusieurs composants intégrés dans l'application. Pour certains développeurs, coller uniquement avec les paramètres fournis par le .NET Framework est suffisant. Mais beaucoup d'autres développeurs trouvent qu'ils ont besoin de contrôler une collection plus large de paramètres - soit pour les composants (écrits par eux-mêmes ou un tiers), ou tout simplement un ensemble de valeurs qu'ils se trouvent à l'aide tout au long de leur application.
Le fichier web.config ne vous permet de définir des paramètres personnalisés avec le
paramètres clé / valeur peut certainement être utile dans de nombreuses circonstances, mais
Heureusement, Microsoft permet aux développeurs d'écrire des classes qui ajoutent un accès programmatique aux paramètres de configuration personnalisés contenus dans web.config.
La section de configuration
Une section de configuration est requise de tous les paramètres qui ne figurent pas dans le
La configuration utilisée comme exemple dans ce tutoriel est un composant qui récupère des flux RSS ou Atom. Il ne fait aucun analyse syntaxique, comme cela dépasse le cadre de ce tutoriel. Au lieu de coder en dur la liste des aliments pour récupérer, le composant ressemble à sa configuration pour contenir les noms et les URL des flux pour récupérer. Le composant est appelé FeedRetriever et la structure XML souhaitée de sa configuration ressemble à ceci:
Celles-ci
La configuration ci-dessus est simple. le
La rédaction du gestionnaire de configuration
Les classes basées sur ConfigurationElement représentent des éléments individuels; il est le bloc de construction d'une section de configuration. Types qui dérivent de ConfigurationElementCollection représentent simplement des éléments qui contiennent plus d'un type d'élément. A partir de la configuration ci-dessus, la
représentant de la Élément
Vous allez commencer avec le
Toutes les fonctions de l'objet ConfigurationElement comme un indexeur pour sa collection interne de la valeur des propriétés. Il est cette collection interne, ainsi que les attributs .NET, qui vous permet de cartographier la
Le code suivant est le code complet pour la classe FeedElement:
La classe ConfigurationElement sert d'indexeur à une collection sous-jacente des propriétés de configuration (d'où la notation indexeur de cette [keyValue]). En utilisant le mot-clé et ce accéder à la propriété sous-jacente avec une clé de chaîne, vous pouvez obtenir et définir la valeur de la propriété sans avoir besoin d'un champ privé pour contenir ces données. Les magasins de collecte de données propriété sous-jacente que le type objet; Par conséquent, vous devez jeter la valeur que le type approprié si vous voulez quelque chose avec elle.
Il existe deux solutions de contournement possibles pour ce problème. La première approche modifie l'expression régulière pour permettre des chaînes vides. La deuxième approche attribue une valeur par défaut à la propriété. Il n'a pas d'importance dans ce cas particulier. Même avec une valeur par défaut, l'attribut URL est encore un attribut obligatoire dans la
Il existe plusieurs autres attributs validateur dans l'espace de noms System.Configuration pour valider les données affectées à des propriétés et des attributs XML à leur carte. Les listes ci-dessous tous les attributs de validateur dans l'espace de noms System.Configuration:
- CallbackValidatorAttribute - Fournit une association entre un objet CallbackValidator et le code pour valider - permet
validation dynamique pour une valeur de configuration. - IntegerValidatorAttribute - valide en utilisant un objet IntegerValidator pour déterminer si la valeur de configuration se situe dans ou en dehors d'une plage spécifique.
- LongValidatorAttribute - valide en utilisant un objet LongValidator pour déterminer si la valeur de configuration se situe dans ou en dehors d'une plage spécifique.
- PositiveTimeSpanValidatorAttribute - en utilisant un objet Valide de PositiveTimeSpanValidator pour les valeurs de configuration de TimeSpan positive.
- RegexStringValidatorAttribute - en utilisant un objet Valide de RegexStringValidator pour déterminer si la valeur de configuration adhère à la l'expression régulière.
- StringValidatorAttribute - en utilisant un objet Valide StringValidator pour assurer la valeur de configuration répond à certains critères - tels que la longueur des cordes et des caractères non valides.
- SubclassTypeValidatorAttribute - en utilisant un objet Valide de SubclassTypeValidator pour déterminer si la valeur de configuration dérive d'un type donné.
- TimeSpanValidatorAttribute - Valide en utilisant un objet TimeSpanValidator pour déterminer si la valeur de configuration est tombe dans ou à l'extérieur d'une plage spécifique.
À l'exception de la CallbackValidatorAttribute, vous ne devez pas créer des objets validateur correspondant à utiliser conjointement avec les attributs de validateur. Le temps d'exécution .NET crée les objets validateur appropriés pour vous, et les attributs contiennent les paramètres nécessaires pour configurer les objets validateur.
Ce petit morceau de code est tout ce qui est nécessaire pour représenter programme individuel
L'écriture d'une classe Collection Element
La représentation XML du
- CreateNewElement () - Crée un nouvel objet ConfigurationElement (FeedElement dans ce
Cas). - GetElementKey () - Obtient la clé d'élément pour un élément de configuration spécifié (le
Nom de la propriété des objets FeedElement dans ce cas).
Dans cet esprit, voir le code complet pour la classe FeedElementCollection ci-dessous:
- AddItemName - Définit le nom du
élément de configuration. Par exemple,
la mise en cela comme « l'alimentation » nécessiterait lales éléments de la
configuration à modifier à. - ClearItemsName - Définit le nom du
élément de configuration (utilisé
pour effacer tous les éléments de la collection). - RemoveItemName - Définit le nom du
élément de configuration (utilisé
pour retirer un élément de la collection).
Négliger ces paramètres nommés par défaut en blanc QU'ILS
La rédaction du FeedRetreiverSection classe
La classe finale, appelée FeedRetrieverSection, dérive de ConfigurationSection et représente la
modification web.config
Avec le gestionnaire complet de configuration, vous pouvez ajouter les éléments appropriés à web.config. le
- Nom - Le nom de l'élément de section de configuration. Dans ce cas, le nom est feedRetriever.
- Type - Le nom qualifié de la classe associée à la section, et le cas échéant,
le nom de l'ensemble de la classe se trouve. Dans ce cas, le nom qualifié
est FeedRetriever.Configuration.FeedRetrieverSection. Si elle se trouve dans un document distinct
l'assemblage, l'attribut type aurait une valeur de « FeedRetriever.Configuration.FeedRetrieverSection,
", où est le nom de l'ensemble
sans les crochets.
Maintenant votre application est correctement configuré pour utiliser le FeedRetrieverSection, FeedElementCollection et classes FeedElement de vous donner accès programmatique aux paramètres personnalisés contenus dans le
Accès aux données de configuration du code
L'espace de noms System.Configuration contient une classe statique appelée ConfigurationManager. Si vous utilisez le
Procédé GetSection () retourne une valeur de type d'objets, de sorte qu'il doit être coulé à quel type est le gestionnaire de cette section. Ce code récupère la section nommée feedRetriever et jette le résultat comme FeedRetrieverSection. Une fois que vous avez l'objet, vous pouvez commencer à accéder à des données de programmation configuration.
Pour vous donner une idée de la façon dont les paramètres de configuration peuvent être utilisés dans votre composant ou de l'application, le code suivant est une implémentation très basique du composant FeedRetriever.
Une fois que vous récupérez le gestionnaire de section avec GetSection (), vous disposez d'un accès complet aux objets créés à partir de vos classes de gestionnaire. La première ligne de GetFeeds () est un pour chaque boucle qui parcourt tous les objets contenus FeedElement avec l'objet FeedElementCollection retourné par la propriété aliments du bétail. Cela vous donne un accès direct à ces objets FeedElement - le rendant facile d'accéder au nom, URL de chaque flux, et les paramètres du cache.
Au cours de chaque itération de la boucle, la méthode fait une demande en utilisant la propriété Url de l'objet FeedElement. Si les résultats de la requête en un succès, les données de l'alimentation est récupérée et stockée dans la variable feedData. Ensuite, le code vérifie la propriété du cache de l'objet FeedElement pour déterminer si l'alimentation en cache ou non. Mise en cache la l'alimentation consiste à construire un nom de fichier en utilisant la propriété Nom de l'objet FeedElement et la date et l'heure. Ensuite, un objet StreamWriter crée le fichier et écrit les données de l'alimentation à elle.
Comme vous pouvez le voir, en utilisant les classes de gestionnaire de section de configuration est la clé pour la récupération et l'utilisation des paramètres personnalisés résidant dans web.config. Il faut certainement plus de temps et d'efforts de votre part, mais il est certainement beaucoup plus facile votre application ou d'un composant à configurer pour vous-même et d'autres développeurs.
- Suivez-nous sur Twitter. ou abonnez-vous à la Nettuts + flux RSS pour les meilleurs tutoriels de développement web sur le web.