0

ServerManager クラスを使用して、アプリケーションの物理パスからアプリケーション プール名を取得することは可能ですか? 私は次のコードでテストしています:

using (var manager = new ServerManager())
//using (var manager = ServerManager.OpenRemote("xxx")) //Uncomment this line to enable remote debugging, comment out line 1821, update Server Name value
{
    //Get Site using Website ID
    var site = manager.Sites.SingleOrDefault(m => m.Id == webSiteID);

    if (site != null)
    {
        //foreach (Application app in site.Applications)
        //{
            bld.AppendLine("1. Stopping App Pool for: " + site.Name);
            //Get the application pool name
            var application = site.Applications.SingleOrDefault(m => m.VirtualDirectories["/"].PhysicalPath == @"D:/inetpub/TestSite1"); //RETURNS NULL
            //Get the application binded to the siteName
            var application1 = site.Applications.SingleOrDefault(m => m.Path == "/TestSite1"); //RETURN INFO I REQUIRE

            var appPoolName = application.ApplicationPoolName;
            //var appPoolName = site.Applications.FirstOrDefault().ApplicationPoolName;
            var appPool = manager.ApplicationPools[appPoolName];

            if (appPool != null)
            {
                //Check the App Pool State
                if (appPool.State == ObjectState.Stopped)
                {
                    //App Pool already stopped
                    bld.AppendLine("1. App Pool: " + appPool.Name + " already stopped.");
                }
                else
                {
                    //Stop the App Pool
                    appPool.Stop();
                    bld.AppendLine("1. App Pool: " + appPool.Name + " stopped.");
                }
            }
            else
            {
                bld.AppendLine("1. No App Pool found.");
                failFlag = true;
            }                            
        //}                        
    }
    else
    {
        bld.AppendLine("1. SiteID: " + webSiteID + " does not exist.");
        failFlag = true;
    }
}

}

私のアプリケーションDBには何百ものアプリケーションがあり、2つのパスが存在するIISでそれらがすべて構成されていることを100%にすることはできないため、仮想パスではなく物理パスを使用してアプリケーションを取得したいと考えています。 sync 例: D:\inetpub\TestSite1 と /TestSite1

4

1 に答える 1