2012-08-27 40 views
3

我需要更改某个网站下所有/选定应用程序的应用程序池。 我在IIS上获得了所有网站和应用程序池,但我无法更改它们。 有什么建议吗?以编程方式更改应用程序的AppPool

这是我迄今为止所做的... 我看起来很奇怪,因为只有字符串变化,而不是对象。

private void ChangeAppPool() 
    { 
     Microsoft.Web.Administration.Site site = (Microsoft.Web.Administration.Site)this.websiteList.SelectedItem; 
     Microsoft.Web.Administration.ApplicationPool appPool = (Microsoft.Web.Administration.ApplicationPool)this.appPoolCombo.SelectedItem; 

     site.Stop(); 
     site.ApplicationDefaults.ApplicationPoolName = appPool.Name; 

     foreach (var item in site.Applications) 
     { 
      item.ApplicationPoolName = appPool.Name; 
     } 

     site.Start(); 
     appPool.Recycle(); 
    } 

感谢

回答

6

我修改您的指定代码到使用ServerManager为你的代码并没有为我工作。 (什么是this.websiteList.SelectedItem?将字符串转换为网站?)

ServerManager serverManager = new ServerManager(); 
Site site = serverManager.Sites[0]; // get site by Index or by siteName 
ApplicationPool appPool = serverManager.ApplicationPools[1]; // get appPool by Index or by appPoolName 

site.Stop(); 
site.ApplicationDefaults.ApplicationPoolName = appPool.Name; 

foreach (var item in site.Applications) 
{ 
    item.ApplicationPoolName = appPool.Name; 
} 

serverManager.CommitChanges(); // this one is crucial!!! see MSDN: 
// Updates made to configuration objects must be explicitly written to the configuration 
// system by using the CommitChanges method!! 
site.Start(); 
appPool.Recycle(); 
+0

selectedItem是对象。通过组合框选择。感谢您的回答! – eestein

相关问题