【问题标题】:Change AppPool of Application programmatically以编程方式更改应用程序的 AppPool
【发布时间】:2012-08-27 18:46:55
【问题描述】:

我需要更改某个网站下所有/选定应用程序的应用程序池。 我的 IIS 上有所有网站和应用程序池,但我无法更改它们。 有什么想法吗?

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

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

【问题讨论】:

    标签: c# iis-7


    【解决方案1】:

    我将您给定的代码修改为使用ServerManager class,因为您的代码不适合我。 (什么是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();
    

    【讨论】:

    • selectedItem 是对象。通过组合框选择。感谢您的回答!
    猜你喜欢
    • 2012-07-24
    • 2014-03-07
    • 1970-01-01
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 2012-03-01
    • 2016-09-05
    • 2019-03-22
    相关资源
    最近更新 更多