Developpez.com

Télécharger gratuitement le magazine des développeurs, le bimestriel des développeurs avec une sélection des meilleurs tutoriels

Developpez.com - Microsoft DotNET
X

Choisissez d'abord la catégorieensuite la rubrique :


Gestion IIS 7 en C#

Date de publication : 6 mars 2007 , Date de mise à jour : 10 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 :

  1. Un nom pour le site
  2. Un port
  3. 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.

Pour commencer nous devons récupérer les pools existant,
pour ce faire j'utilise comme je l'ai écrit ici : fr http://www.developpez.net/forums/showthread.php?t=283047 ,
c'est-à-dire je créé deux fonctions :

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



Valid XHTML 1.1!Valid CSS!

Copyright © David Tavan. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.

Responsable bénévole de la rubrique Microsoft DotNET : Hinault Romaric -