Как я могу изменить имя пользователя / пароль ApplicationPool в IIS из C #? - PullRequest
2 голосов
/ 19 марта 2009

Я использую приведенный ниже код для создания нового пула приложений в классе Установщика моего приложения:

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

Как изменить учетные данные пользователя, под которым работает этот пул приложений?

Ответы [ 2 ]

6 голосов
/ 19 марта 2009

Добавьте следующее в ваш код сразу после строки, где вы создаете 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 и password к параметрам CreateAppPool() метода.

Еще одна вещь, которую вам нужно сделать, если вы еще не знали, - убедиться, что пользователь пула приложений получает достаточные права для доступа к метабазе IIS, временным папкам ASP.NET и т. Д. Это можно сделать, выполнив следующую команду :

aspnet_regiis.exe -ga <username>

Вы можете найти этот инструмент в папке %SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727. Я обычно просто выкладываю, используя System.Diagnostics.Process.

И, наконец, пользователю пула приложений потребуются (как минимум) права на чтение в веб-папке приложения.

0 голосов
/ 19 марта 2009
aspnet_regiis.exe -ga <username>

Вероятно, не самая лучшая команда для использования.

Вы должны добавить пользователя APPPool в группу IIS_WPG и предоставить права, используя эту группу.

...