Есть ли способ создать пул приложений в диспетчере IIS с помощью C #? - PullRequest
2 голосов
/ 07 апреля 2011

Может ли кто-нибудь помочь создать пул приложений в IIS с использованием C #?

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

Ответы [ 2 ]

10 голосов
/ 07 апреля 2011

Если вы используете IIS7:

Чтобы создать пул приложений, используя и установить версию .NET Framework (в данном случае v2.0), сделайте следующее:

using Microsoft.Web.Administration;
...

using(ServerManager serverManager = new ServerManager())
{
  ApplicationPool newPool = serverManager.ApplicationPools.Add("MyNewPool");
  newPool.ManagedRuntimeVersion = "v2.0";
  serverManager.CommitChanges();
}

Вы должны добавить ссылку на Microsoft.Web.Administration.dll, которую можно найти в:

%SYSTEMROOT%\System32\InetSrv

Чтобы назначить виртуальный каталог пулу приложений (хотя я думаю, что вы имеете в виду приложение):

using (ServerManager serverManager = new ServerManager())
{
  // Find Default Website
  Site site = serverManager.Sites.First(s => s.Id == 1);
  Application newApp = site.Applications.Add("/MyNewApp", 
                                               @"C:\inetpub\wwwroot\mynewapp");
  newApp.ApplicationPoolName = "MyNewPool";
  serverManager.CommitChanges();
}

Если вы используете IIS6:

using (DirectoryEntry appPools = 
                   new DirectoryEntry("IIS://localhost/W3SVC/AppPools"))
{
  using (DirectoryEntry newPool = appPools.Children.Add("MyNewPool", 
                                                    "IIsApplicationPool"))
  {
    // Just use NetworkService as pool account
    newPool.Properties["AppPoolIdentityType"].Value = 2;
    newPool.CommitChanges();
  }
}

Следующий код создает приложение с именем MyNewApp на веб-сайте по умолчанию и назначает его пулу приложений MyNewPool, который мы создали с помощью приведенного выше примера кода:

using (DirectoryEntry siteRoot = 
         new DirectoryEntry(@"IIS://Localhost/W3SVC/1/root"))
{
  using (DirectoryEntry newApp = 
          siteRoot.Children.Add("MyNewApp", "IIsWebVirtualDir"))
  {
    newApp.Properties["Path"].Value = @"C:\inetpub\wwwroot\mynewapp";
    newApp.Properties["AccessScript"][0] = true;
    newApp.Properties["AccessFlags"].Value = 513; // AccessScript | AccessRead
    newApp.Properties["AuthFlags"].Value = 7;// AuthAnonymous|AuthBasic|AuthNTLM
    newApp.Properties["AppIsolated"].Value = "2";
    newApp.Properties["AppRoot"].Value = 
                       newApp.Path.Replace("IIS://Localhost", "/LM");
    newApp.Properties["AppPoolId"].Value = "MyNewPool";
    newApp.Properties["AppFriendlyName"].Value = "MyNewApp";
    newApp.CommitChanges();
  }
}

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

Для получения дополнительной информации см .:

IIS7:

Справочник по конфигурации IIS 7
Как использовать Microsoft.Web.Administration

IIS6:

Использование System.DirectoryServices для настройки IIS
Справочник по программному администрированию IIS
Свойства метабазы ​​IIS

0 голосов
/ 07 апреля 2011

Я полагаю, что это зависит от того, какую версию IIS вы используете, но посмотрите: http://msdn.microsoft.com/en-us/library/ms525598.aspx (пример для IIS7)

Источник был от другого вопроса: Программно создать веб-сайт в IIS с использованием C # и установить номер порта

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...