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
Lancez l'Éditeur de configuration dans le Gestionnaire IIS en double-cliquant sur la fonctionnalité « Éditeur de configuration » à partir d'une connexion de serveur.
Dans le menu déroulant Section :, cliquez sur system.applicationHost -> applicationPools.
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).
Dans l'Éditeur de collection, vous verrez une liste des pools d'applications qui existent déjà.
Dans le volet Action, cliquez sur « Ajouter »
Renseignez la grille de propriétés affichée dans la section Propriétés.
- 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.
- Sélectionnez processModel pour développer.
- Définissez userName sur « PoolId1 ».
- Définissez le mot de passe sur « PoolId1Pwd ».
- Réglez identityType sur « SpecificUser ».
- Vous pouvez éventuellement modifier d'autres paramètres ici.
[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.