2010-01-28 20 views
5

Как я могу изменить параметры/свойства пула приложений IIS (C#)? Например, как изменить параметр «Включить 32-разрядные приложения»? Имеются ли ссылки на свойства для IIS 6 и IIS 7 на MSDN или Technet? Заранее благодарим за помощь!Пул приложений IIS: изменить настройки программные

ответ

1

Попробуйте this сверху для размера.

DirectoryEntry root = this.GetDirectoryEntry("IIS://" + this.DomainName + "/W3SVC/AppPools"); 
    if (root == null) 
     return null; 

List<ApplicationPool> Pools = new List<ApplicationPool>(); 
... 
7

Вы можете решить эту проблему с помощью appcmd.exe. Где «DefaultAppPool» - это имя пула.

appcmd list apppool /xml "DefaultAppPool" | appcmd set apppool /in /enable32BitAppOnWin64:true 

Если у вас есть какие-либо проблемы с запустив его с помощью C# посмотрите How To: Execute command line in C#.

ps: Дополнительную информацию о appcmd.exe вы можете найти here. По умолчанию расположение инструмента C: \ Windows \ system32 \ Inetsrv

+1

Кто знал, что вы могли бы использовать трубопровод !? Спасибо, это здорово. – Rory

0

Простейшее решение, которое работало для меня

ServerManager server = new ServerManager(); 
ApplicationPoolCollection applicationPools = server.ApplicationPools; 

//this is my object where I put default settings I need, 
//not necessary but better approach    
DefaultApplicationPoolSettings defaultSettings = new DefaultApplicationPoolSettings(); 

     foreach (ApplicationPool pool in applicationPools) 
     { 
      try 
      { 
       if (pool.Name == <Your pool name here>) 
       { 
        pool.ManagedPipelineMode = defaultSettings.managedPipelineMode; 
        pool.ManagedRuntimeVersion = defaultSettings.managedRuntimeVersion; 
        pool.Enable32BitAppOnWin64 = defaultSettings.enable32BitApplications; 
        pool.ProcessModel.IdentityType = defaultSettings.IdentityType; 
        pool.ProcessModel.LoadUserProfile = defaultSettings.loadUserProfile; 

        //Do not forget to commit changes 
        server.CommitChanges(); 

       } 

      } 
      catch (Exception ex) 
      { 
       // log 
      } 
     } 

и мой объект для примера цели

public class DefaultApplicationPoolSettings 
{ 

    public DefaultApplicationPoolSettings() 
    { 
     managedPipelineMode = ManagedPipelineMode.Integrated; 
     managedRuntimeVersion = "v4.0"; 
     enable32BitApplications = true; 
     IdentityType = ProcessModelIdentityType.LocalSystem; 
     loadUserProfile = true; 

    } 
    public ManagedPipelineMode managedPipelineMode { get; set; } 

    public string managedRuntimeVersion { get; set; } 

    public bool enable32BitApplications { get; set; } 

    public ProcessModelIdentityType IdentityType { get; set;} 

    public bool loadUserProfile { get; set; } 
} 
Смежные вопросы