使用組態編輯器:產生腳本
作者: Crystal Hoyer
逐步解說目標
本逐步解說旨在示範如何透過應用程式集區產生範例使用組態編輯器的產生腳本功能。
必要條件
本逐步解說需要下列必要條件:
第 1 部分 - 使用組態編輯器建立應用程式集區
按兩下伺服器連線中的 [組態編輯器] 功能,以啟動 IIS 管理員中的組態編輯器。
在 [ 區段: ] 下拉式功能表下,按一下 system.applicationHost - > applicationPools
在下方顯示的屬性方格中,按一下省略號 「...」在第一個資料列上,對應至 (集合) 專案。
在 [集合編輯器]中,您會看到已存在的應用程式集區清單。
在動作窗格中,按一下 [新增]
填入 [ 屬性 ] 區段中顯示的屬性方格。
- 請注意 ,「name」 屬性具有符號中的索引鍵。 這表示必要欄位。 輸入 「applicationPool1」 作為您的名稱,以建立新的應用程式集區。
- 選取 [processModel] 以展開。
- 將 userName 設定為 「PoolId1」
- 將密碼設定為 「PoolId1Pwd」
- 將 identityType 變更為 「SpecificUser」
- 您可以在這裡選擇性地變更其他設定
[選擇性]若要認可組態系統的變更,請按一下 [動作] 窗格上的 [套用]。 不過,為了進行逐步解說,請不要這麼做。
第 2 部分 – 產生腳本
關閉屬性對話方塊之後,按一下 [動作] 窗格上的 [產生腳本]連結。 [腳本對話方塊] 的 3 個索引標籤會顯示 3 種類型的腳本,以完成我們在本節上執行的動作。
Managed 程式碼:用來建立 'applicationPool1' 的 C# 程式碼片段
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();
}
}
腳本:用來建立 'applicationPool1' 的 Jscript 程式碼
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();
命令列:用來建立 'applicationPool1' 的 Appcmd 命令,並指定 identiy。
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
第 3 部分 – 建立建立 10 個應用程式集區的 C# 程式
根據組態編輯器所產生的程式碼,我們將重構程式碼,以將一個應用程式集區建立至方法 「CreateApplicationPool」。 最終程式碼看起來像這樣:
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);
}
}
總結
您現在已建立程式碼,以從組態編輯器協助建立 10 個應用程式集區。