構成エディターの使用: スクリプトの生成
公開日: 2008 年 3 月 20 日 (作業者: choyer (英語))
更新日: 2009 年 7 月 16 日 (作業者: choyer (英語))
チュートリアルの目的
このチュートリアルの目的は、アプリケーション プールの生成の例を通して、構成エディターのスクリプト生成機能の使用方法を示すことです。
必要条件
このチュートリアルの必要条件は次のとおりです。
パート 1 - 構成エディターを使用したアプリケーション プールの作成
IIS マネージャーで、サーバー接続の [構成エディター] 機能をダブルクリックして構成エディターを起動します。
[セクション] ドロップダウン メニューで、system.applicationHost、applicationPools の順にクリックします。
下に表示されるプロパティ グリッドで、最初の行の省略記号 (...) をクリックします。これは、[(コレクション)] アイテムに相当します。
コレクション エディターで、既存のアプリケーション プールの一覧を確認できます。
操作ウィンドウで、[追加] をクリックします。
[プロパティ] セクションに表示されるプロパティ グリッドに入力します。
1. name プロパティには鍵のアイコンが表示されています。これは必須フィールドを意味します。新しいアプリケーション プールを作成するために、名前として「applicationPool1」と入力します。
2. processModel をクリックして展開します。
3. userName を「PoolId1」と設定します。
4. password を「PoolId1Pwd」と設定します。
5. identityType を「SpecificUser」に変更します。
6. ここで、その他の設定を変更することもできます。
(省略可能) 構成システムに対して変更内容をコミットするには、[操作] ウィンドウの [適用] をクリックします。ただし、このチュートリアルでは、この操作を行わないでください。
パート 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 を作成し、ID を指定するための 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 - 10 個のアプリケーション プールを作成する C# プログラムの作成
構成エディターで生成されたコードに基づいて、1 つのアプリケーション プールを作成するコードをリファクタリングして 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 個のアプリケーション プールを作成するコードを作成できました。