3

特定の Web サイトで、すべて/選択したアプリケーションのアプリケーション プールを変更する必要があります。IIS ですべての Web サイトとアプリケーション プールを取得しましたが、それらを変更できません。何か案は?

これが私がこれまでに行ったことです...オブジェクトではなく、文字列の変更のみがあるため、私には奇妙に見えます。

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

1 に答える 1

9

コードが機能しなかったため、指定されたコードを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();
于 2012-08-27T19:07:31.857 に答える