Partager via


Utilisation de l'éditeur de configuration : générer des scripts

Auteur : Crystal Hoyer

Objectif de la présentation

Cette présentation vise à montrer comment utiliser la fonctionnalité Générer un script de l'éditeur de configuration via l'exemple de génération de pool d'applications.

Prérequis

Elle nécessite les prérequis suivants :

Partie 1 : Créer un pool d'applications à l'aide de l'éditeur de configuration

  1. Lancez l'Éditeur de configuration dans le Gestionnaire IIS en double-cliquant sur la fonctionnalité « Éditeur de configuration » à partir d'une connexion de serveur.

  2. Dans le menu déroulant Section :, cliquez sur system.applicationHost -> applicationPools.

  3. Dans la grille des propriétés affichée ci-dessous, cliquez sur l'ellipse « ... » sur la première ligne, qui correspond à l'élément (Collection).

  4. Dans l'Éditeur de collection, vous verrez une liste des pools d'applications qui existent déjà.

  5. Dans le volet Action, cliquez sur « Ajouter »

  6. Renseignez la grille de propriétés affichée dans la section Propriétés.

    1. Notez que la propriété « nom » comporte une clé dans le symbole. Cela indique un champ obligatoire. Entrez « applicationPool1 » comme nom pour créer un pool d'applications.
    2. Sélectionnez processModel pour développer.
    3. Définissez userName sur « PoolId1 ».
    4. Définissez le mot de passe sur « PoolId1Pwd ».
    5. Réglez identityType sur « SpecificUser ».
    6. Vous pouvez éventuellement modifier d'autres paramètres ici.
  7. [facultatif] Pour valider les modifications apportées au système de configuration, cliquez sur Appliquer dans le volet Actions. Toutefois, dans le cadre de notre présentation, veuillez ne pas le faire.

Partie 2 : Générer un script

Après avoir fermé la boîte de dialogue des propriétés, cliquez sur le lien Générer un script dans le voletActions. Les 3 onglets de la boîte de dialogue script affichent 3 types de scripts pour accomplir les actions que nous avons effectuées dans cette section.

Code managé : extrait de code C# pour créer « applicationPool1 »

using System;
using Microsoft.Web.Administration;

internal static class Sample {

    private static void Main() {

    ServerManager serverManager = new ServerManager();
    Configuration config = serverManager.GetApplicationHostConfiguration();

    ConfigurationSection applicationPoolsSection = config.GetSection("system.applicationHost/applicationPools");

    ConfigurationElementCollection applicationPoolsCollection = applicationPoolsSection.GetCollection();

    ConfigurationElement addElement = applicationPoolsCollection.CreateElement("add");
    addElement["name"] = @"applicationPool1";

    ConfigurationElement processModelElement = addElement.ChildElements["processModel"];
    processModelElement["identityType"] = @"SpecificUser";
    processModelElement["userName"] = @"PoolId1";
    processModelElement["password"] = @"PoolId1Pwd";
    applicationPoolsCollection.Add(addElement);

    serverManager.CommitChanges();
    }
}

Script : code Jscript pour créer « applicationPool1 »

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var applicationPoolsSection = adminManager.GetAdminSection("system.applicationHost/applicationPools", "MACHINE/WEBROOT/APPHOST");

var applicationPoolsCollection = applicationPoolsSection.Collection;

var addElement = applicationPoolsCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "applicationPool1";
var processModelElement = addElement.ChildElements.Item("processModel");
processModelElement.Properties.Item("identityType").Value = "SpecificUser";
processModelElement.Properties.Item("userName").Value = "PoolId1";
processModelElement.Properties.Item("password").Value = "PoolId1Pwd";
applicationPoolsCollection.AddElement(addElement);

adminManager.CommitChanges();

Ligne de commande : commandes Appcmd pour créer « applicationPool1 » et spécifier un identificateur.

appcmd.exe set config -section:system.applicationHost/applicationPools /+".[name='applicationPool1']" /commit:apphost
appcmd.exe set config -section:system.applicationHost/applicationPools /.[name='applicationPool1'].processModel.identityType:"SpecificUser" /.[name='applicationPool1'].processModel.userName:"PoolId1" /.[name='applicationPool1'].processModel.password:"PoolId1Pwd" /commit:apphost

Partie 3 : Créer un programme C# qui crée 10 pools d'applications

En fonction du code généré par l'Éditeur de configuration, nous refactoriserons le code pour créer un pool d'applications à la méthode « CreateApplicationPool ». Le code final ressemble à ceci :

using System;
using Microsoft.Web.Administration;
 
internal static class Sample {
  private static void Main() {
  ServerManager serverManager = new ServerManager();
Configuration config = serverManager.GetApplicationHostConfiguration();
 
ConfigurationSection applicationPoolsSection = config.GetSection("system.applicationHost/applicationPools");
 
ConfigurationElementCollection applicationPoolsCollection = applicationPoolsSection.GetCollection();
 
for (int i = 0; i < 10; i++) {
CreateApplicationPool(applicationPoolsCollection,
"AppPool" + i.ToString(),
  "AppPoolId" + i.ToString(),
"AppPoolPwd" + i.ToString());
}
serverManager.CommitChanges();
}
 
private static void CreateApplicationPool(ConfigurationSection applicationPoolsSection,
string appPoolName,
string appPoolUserName,
string appPoolPassword) 
{
  ConfigurationElement addElement = applicationPoolsCollection.CreateElement("add");
addElement["name"] = appPoolName;
 
ConfigurationElement processModelElement = addElement.ChildElements["processModel"];
processModelElement["identityType"] = @"SpecificUser";
processModelElement["userName"] = appPoolUserName;
processModelElement["password"] = appPoolPassword;
applicationPoolsCollection.Add(addElement);
}
}

Résumé

Vous avez maintenant créé du code pour créer 10 pools d'applications avec l'aide de l'Éditeur de configuration.