Gestion IIS 7 en C#
Date de publication : 6 mars 2007 , Date de mise à jour : 6 mars 2007
Par
David Tavan (Neldim) (Blog)
Voici une introduction à la gestion de IIS 7 grâce à Visual Studio 2005
et dans notre cas en C#.
Tout d'abord il faut bien préciser que je parle uniquement de IIS 7,
de fait cet article concernera que les OS suivants : VISTA et " longhorn server ".
I. Création d'un site web
II. Création d'un pool d'application
III. Assignation d'un pool existant à un site.
IV. Création d'une application et d'un répertoire virtuel
V. Lister les sites présents dans IIS 7
I. Création d'un site web
Pour commencer nous allons voir comment créer un site web. Pour ce faire nous ajouterons à nos projets une référence faire Microsoft.Web.Administration.
Pour créer un site nous devrons fournir les informations suivantes à notre application :
- Un nom pour le site
- Un port
- Un chemin physique
Nous déclarerons une instance de ServerManager et une instance de Site, ce qui nous donne une fonction du type :
C# |
static void createSite(string strPath, string strName, int iPort)
{
_srvMgr = new ServerManager();
_site = _srvMgr.Sites.Add(strName, strPath, iPort);
_site.ServerAutoStart = true;
_srvMgr.CommitChanges();
} |
L'utilisation devient alors simpliste, par exemple je veux créer le site test pointant sur le dossier d:\test avec le port 8080 :
C# |
createSite(@"d:\test\", "test", 8080); |
Comme prévu le site est créé pour vérifier allons faire un petit tour dans le gestionnaire de IIS :
Comme prévu le site est créé.
II. Création d'un pool d'application
Nous allons maintenant changer le pool d'application pour notre site,
tout d'abord créons un nouveau pool d'application :
Pour ce faire nous allons créer une fonction et instancier une ajouter une instance de ApplicationPool.
Au niveau des déclarations :
C# |
static ServerManager _srvMgr;
static Site _site;
static ApplicationPool appPool; |
Maintenant la fonction permettant de créer un nouveau pool et de l'assigner à un site :
C# |
static void createAndAssignNewPool(string strSite,string strPoolName)
{
_srvMgr = new ServerManager();
_srvMgr.ApplicationPools.Add(strPoolName);
_srvMgr.Sites[strSite].Applications[0].ApplicationPoolName = strPoolName;
appPool = _srvMgr.ApplicationPools[strPoolName];
appPool.ManagedPipelineMode = ManagedPipelineMode.Classic;
_srvMgr.CommitChanges();
appPool.Recycle();
} |
L'utilisation de cette fonction sur notre site précédemment créé ce fait de la sorte :
C# |
createAndAssignNewPool("test", "newPoolTest"); |
Histoire d'en avoir le cœur net regardons dans le gestionnaire IIS :
Le pool est-il créé ?
La réponse est oui la seconde question suivante est de savoir si le site test à bien pris en compte le nouveau pool :
Bon tout est comme prévu. (Heureusement : )
III. Assignation d'un pool existant à un site.
Fonction permettant de récupérer les pools existants |
static IEnumerator GetExistingPools()
{
_srvMgr = new ServerManager();
IEnumerator enu = _srvMgr.ApplicationPools.GetEnumerator();
return enu;
}
static List<string> existingPools()
{
IEnumerator enumPools = GetExistingPools();
List<string> lstPools = new List<string>();
int i = 0;
while (enumPools.MoveNext())
{
lstPools.Add(_srvMgr.ApplicationPools[i].Name);
i++;
}
return lstPools;
} |
Comme c'est une application console je vais faire afficher la lite des pools disponibles :
Affichage des pools existants |
static void listExistingPool()
{
List<String> lstPools = new List<string>();
lstPools = existingPools();
foreach (String p in lstPools)
{
Console.WriteLine(p.ToString());
}
} |
Maintenant dans le Main nous allons afficher les pools et demander à l'utilisateur de choisir un pool pour un site :
Affichage et renseignement d'un pool |
listExistingPool();
string strPool;
Console.WriteLine("Choisir un pool");
strPool = Console.ReadLine();
assignPool("test", strPool); |
A l'éxécution celà nous donne :
Il suffit maintenant de taper le nom du pool souhaité puis entrée :
Un petit tour dans IIS :
Le pool a bien changé :)
IV. Création d'une application et d'un répertoire virtuel
TODO : je vais ajouter la création d'application et de répertoires virtuels
V. Lister les sites présents dans IIS 7
à faire
Copyright © David Tavan.
Aucune reproduction, même partielle, ne peut être faite
de ce site ni de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à
trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.