demande de rappel immédiat

ASP.NET : Stockage des paramètres applicatifs (AppSettings) dans le fichier web.config

Posted by chic Thursday, March 16, 2006 9:16:00 AM
Rate this Content 0 Votes

 
 

ASP.NET fournit la possibilité de stocker des paramètres applicatifs de manière externe à l'application. Cela permet de définir ces paramètres dans le fichier de configuration (web.config) et de les rendre externe à l'application sans réel effort.

La section <appSettings> dans le fichier web.config est prévu pour ce faire. Elle permet de stocker tous les paramètres applicatifs que vous souhaitez tels que les chaînes de connexion, les dossiers, les noms de fichiers, etc.

Il y a donc deux points à regarder pour pouvoir utiliser cette fonctionnalité :

  1. comment stocker les paramètres dans cette section
  2. comment y accéder facilement

Stockage des paramètres dans le fichier web.config

Voici un premier exemple de paramètre stocké dans le fichier web.config :

<? Xml version = "1.0" encoding = "utf-8"?
<configuration>
<system.web>
<compilation defaultLanguage="c#" debug="true" />
</ system.web>
<appSettings>
<add key="connectDB" valeur ="server=monserveur\sql2008;database=MaBase;Integrated Security=SSPI" />
</ appSettings>
</ configuration>

Dans cet exemple, on définit un paramètre de nom "connectDB" et dont la valeur est en fait une chaîne de connexion. La lecture de ce paramètre se fait simplement grace à la classe ConfigurationSettings de l'espace de nom System.Configuration.

Accès des paramètres via la classe ConfigurationSettings

Voici l'exemple de lecture :

using System.Configuration; 
//...
string valConnect = ConfigurationSettings.AppSettings [ "connectDB"];

Encapsulation des paramètres

Par la suite, au lieu de dupliquer ces lignes de code dans votre application, vous avez tout intérêt à les encapsuler, à l'instar des paramètres applicatifs dans les applications Windows Forms. Cela permettra d'avoir un typage correct du paramètre, de nommer les paramètres plus proprement, de définir au besoin des valeurs par défaut.

Voici comment encapsuler la lecture des paramètres :

 

using System.Configuration;
namespace silogix.blog.exemple
{
    public class Configuration
    {
        public static string connectDB
        {
            get
            {
                return ConfigurationSettings.AppSettings["ConnectDB"];
            }
        }
    }
}
 

 

Une fois cette classe définie, la lecture se simplifie en utilisant directement la méthode statique connectDB sur cette classe comme suit :

string valConnect = Configuration.connectDB;

Non seulement cette approche permet de lire de manière transparente les paramètres applicatifs dans le fichier web.config mais aussi de les typer. En effet, une limite importante du stockage des paramètres dans le fichier web.config est qu'ils sont systématiquement typés sous forme de chaîne de caractères. La récupération via la classe d'encapsulation permet de convertir (ou lire) de manière correcte ces paramètres. 

Il est également important de remarquer que lors du changement des paramètres dans le fichier web.config, l'application ASP.NET sera automatique redémarrée pour lire ces nouveaux paramètres.

Fichiers de configuration multiples

Dans l'exemple précédent, nous avons directement indiqué les paramètres de configuration dans le fichier web.config. Or, il arrive souvent que l'on ait en réalité besoin de plusieurs jeux de paramètres différents (par exemple  : des paramètres pour la version dévéloppement ou pour la version de test de l'application). La section appSettings permet d'indiquer , à la place des parmètres, un fichier qui stockera les paramètres.

Voici un exemple du fichier web.config avec renvoie des paramètres dans un fichier externe :

 

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.web>
    <compilation defaultLanguage="c#" debug="true" />
  </system.web>
<appSettings file="configTest.config"/>
</configuration>

 

Le fichier externe (dans notre exemple configTest.config) ne contient alors que les paramètres comme montré ici :

 

<appSettings>
 <add key="connectDB" valeur ="server=monserveur\sql2008;database=MaBase;Integrated Security=SSPI" />
</appSettings>
 
Cette approche a plein d'avantage :
  • Cela permet de rendre le fichier de paramètres plus clair, en l'externalisant du fichier web.config. En effet, plus l'application est élaborée, plus elle indiquera des informations dans le fichier web.config;
  • Le fichier externe est toujours prioritaire sur la définition interne : si une paire (clé/valeur) existe dans le fichier web.config et le fichier externe, ce sera celle du fichier externe qui sera utilisée;
  • cela permet d'avoir des groupes de paramètres par configuration (test, développement, intégration, etc.) qui sont facilement modifiable
 
Une limite cependant à cette approche est que la modification du contenu d'un fichier externe n'est pas automatiquement détectée. Donc la prise en compte des paramètres modifiés demandera une redémarrage de l'application ASP.NET pour permettre sa prise en compte (alors que ce rédémarrage est automatique si le fichier web.config est modifié directement).
 
- Chic
Comments are closed on this post.