使用配置编辑器:生成脚本
演练目标
本演练旨在演示如何通过应用程序池生成示例使用配置编辑器的“生成脚本”功能。
先决条件
本演练要求满足以下先决条件:
第 1 部分 - 使用配置编辑器创建应用程序池
通过双击服务器连接中的“配置编辑器”功能,在 IIS 管理器中启动配置编辑器。
在“部分:”下拉菜单中,单击 system.applicationHost -> applicationPools
在下面显示的属性网格中,单击第一行上的省略号“…”,它对应的是“(集合)”项。
在“集合编辑器”中,你将看到已存在的应用程序池的列表。
在“操作”窗格上,单击“添加”
填写“属性”部分中显示的属性网格。
- 请注意,“name”属性具有带符号的键。 这表示必填字段。 输入“applicationPool1”作为名称来创建新的应用程序池。
- 选择要展开的 processModel。
- 将 userName 设置为“PoolId1”
- 将密码设置为“PoolId1Pwd”
- 将 identityType 更改为“SpecificUser”
- 可以选择在此处更改其他设置
[可选] 若要将更改提交到配置系统,请单击“操作”窗格中的“应用”。 但是,出于演练的目的,请不要这样做。
第 2 部分 - 生成脚本
关闭“属性”对话框后,单击“操作”窗格中的“生成脚本”链接。 “脚本”对话框的 3 个选项卡显示 3 种类型的脚本,用于完成我们在本部分中执行的操作。
托管代码:用于创建“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 命令并指定标识。
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 部分 - 创建一个 C# 程序来创建 10 个应用程序池
根据配置编辑器生成的代码,我们将重构代码,将一个应用程序池创建到方法“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 个应用程序池。