2

以下のコードを使用して、アプリケーションのインストーラー クラスに新しいアプリケーション プールを作成しています。

private static void CreateAppPool(string serverName, string appPoolName)
{
    //  metabasePath is of the form "IIS://<servername>/W3SVC/AppPools"
    //    for example "IIS://localhost/W3SVC/AppPools" 
    //  appPoolName is of the form "<name>", for example, "MyAppPool"
    string metabasePath = string.Format("IIS://{0}/W3SVC/AppPools", serverName);
    Console.WriteLine("\nCreating application pool named {0}/{1}:", metabasePath, appPoolName);
    try
    {
        DirectoryEntry apppools = new DirectoryEntry(metabasePath);
        DirectoryEntry newpool = apppools.Children.Add(appPoolName, "IIsApplicationPool");
        newpool.CommitChanges();
        Console.WriteLine("AppPool created.");
    }
    catch (Exception ex)
    {
        Console.WriteLine("Failed in CreateAppPool with the following exception: \n{0}", ex.Message);
    }
}

このアプリケーション プールが実行されているユーザー資格情報を変更するにはどうすればよいですか?

4

2 に答える 2

6

を作成した行の直後に次をコードに追加しますnewpool

DirectoryEntry newpool = 
            apppools.Children.Add(appPoolName, "IIsApplicationPool");
// Add this:
newpool.Properties["AppPoolIdentityType"].Value = 3;
newpool.Properties["WAMUserName"].Value = 
            Environment.MachineName + @"\" + username;
newpool.Properties["WAMUserPass"].Value = password;

username明らかに、文字列変数とメソッド パラメータも追加する必要がありますpasswordCreateAppPool()

まだ気づいていない場合は、もう 1 つ必要なことは、アプリケーション プールのユーザーが IIS メタベース、ASP.NET 一時フォルダーなどにアクセスするための十分な権限を取得していることを確認することです。これを行うには、次のコマンドを実行します。

aspnet_regiis.exe -ga <username>

このツールはフォルダにあります%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727。私は通常、を使用してシェルアウトしSystem.Diagnostics.Processます。

最後に、アプリケーション プールのユーザーには、(少なくとも) アプリの Web フォルダーに対する読み取り権限が必要です。

于 2009-03-19T15:32:35.470 に答える
0
aspnet_regiis.exe -ga <username>

おそらく使用するのに最適なコマンドではありません。

APPPool ユーザーを IIS_WPG グループに追加し、そのグループを使用して権限を付与する必要があります。

于 2009-03-19T17:46:49.547 に答える