c# - 以编程方式更改应用程序的 AppPool

标签 c# iis-7

我需要更改某个网站下所有/选定应用程序的应用程序池。 我的 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();
}

最佳答案

我修改了您给定的代码以使用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();

关于c# - 以编程方式更改应用程序的 AppPool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12147721/

相关文章:

c# - 我应该使用 int 还是 Int32

c# - 需要帮助来理解这个 C# 泛型类

c# - 如何让 SqlBulkCopy 告诉我哪个列有截断错误

c# - C# vnext 中的主构造函数

WCF (.NET 4.0) + IIS 7 + Windows 身份验证错误 - "service require Windows Authentication but it is not enabled for the IIS application "

c# - 在每个函数中使用语句 -> 通过适当的清理转换为类字段?

asp.net - 在 web.config 中使用自定义错误设置时出现 IIS7 'one liner' 错误

iis-7 - 从移动浏览器打开时的 URL 重定向/重写

iis-7 - 使用 MSDeploy 持续部署 IIS 设置

wpf - 如何在 WCF 客户端中接受自签名 SSL 证书?