Freigeben über


Verwenden des Konfigurationseditors: Skript generieren

von Crystal Hoyer

Ziel der exemplarischen Vorgehensweise

Diese exemplarische Vorgehensweise soll veranschaulichen, wie die Funktion „Skript generieren“ des Konfigurationseditors verwendet wird. Die Anwendungspoolgenerierung dient dazu als Beispiel.

Voraussetzungen

Für diese exemplarische Vorgehensweise wird Folgendes vorausgesetzt:

Teil 1 – Erstellen eines Anwendungspools mithilfe des Konfigurationseditors

  1. Starten Sie den Konfigurationseditor im IIS-Manager, indem Sie in einer Serververbindung auf das Feature „Konfigurationseditor“ doppelklicken.

  2. Klicken Sie unter dem Dropdownmenü Abschnitt: auf „system.applicationHost“ –> „applicationPools“.

  3. Klicken Sie im unten angezeigten Eigenschaftenraster auf die Auslassungspunkte „…“ in der ersten Zeile, die dem Element (Auflistung) entspricht.

  4. Im Auflistungs-Editor wird eine Liste der bereits vorhandenen Anwendungspools angezeigt.

  5. Klicken Sie im Aktionsbereich auf „Hinzufügen“.

  6. Füllen Sie das Eigenschaftenraster aus, das im Abschnitt Eigenschaften angezeigt wird.

    1. Beachten Sie, dass die Eigenschaft „name“ einen Schlüssel im Symbol aufweist. Damit wird ein Pflichtfeld gekennzeichnet. Geben Sie „applicationPool1“ als Namen ein, um einen neuen Anwendungspool zu erstellen.
    2. Wählen Sie „processModel“ aus, um den Eintrag zu erweitern.
    3. Legen Sie „userName“ auf „PoolId1“ fest.
    4. Legen Sie „password“ auf „PoolId1Pwd“ fest.
    5. Ändern Sie „identityType“ in „SpecificUser“.
    6. Sie können hier optional andere Einstellungen ändern.
  7. [optional] Um die Änderungen am Konfigurationssystem zu übernehmen, klicken Sie auf Anwenden im Bereich Aktionen. Für die Zwecke unserer exemplarischen Vorgehensweise sollten Sie dies jedoch nicht tun.

Teil 2 – Generieren des Skripts

Klicken Sie nach dem Schließen des Eigenschaftendialogfelds auf den Link Skript generieren im Bereich Aktionen. Auf den 3 Registerkarten des Skriptdialogfelds werden 3 Typen von Skripts angezeigt, mit denen die in diesem Abschnitt beschriebenen Aktionen ausgeführt werden können.

Verwalteter Code: C#-Codeschnipsel zum Erstellen von „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();
    }
}

Skript: Jscript-Code zum Erstellen von „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();

Befehlszeile: Appcmd-Befehle zum Erstellen von „applicationPool1“ und Angeben einer Identität

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

Teil 3 – Erstellen eines C#-Programms, das 10 Anwendungspools erstellt

Basierend auf dem generierten Code des Konfigurationseditors gestalten wir den Code so um, dass ein Anwendungspool für die Methode „CreateApplicationPool“ erstellt wird. Hier ist der fertige Code:

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);
}
}

Zusammenfassung

Sie haben jetzt mithilfe des Konfigurationseditors Code erstellt, um 10 Anwendungspools zu erstellen.