如何通过程序获取当前IIS应用程序池的名称,而不是ActiveDirectory

本文关键字:ActiveDirectory 程序池 应用程序 获取 程序 何通过 应用 IIS | 更新日期: 2023-09-27 18:21:50

我的Web API遇到了这样一种情况,我现在唯一能想到的选择就是recycleapp pool,同时深入研究并找出问题的真正原因。同时,在满足条件后,我需要一种方法来recycleapp pool。我想我在这里找到了解决方案:http://www.codeproject.com/Tips/780076/Recycle-Application-Pool-s-in-IIS-Server-Using-C

// Needs Microsoft.Web.Administration NuGet
public static void RecycleAppPool()
{
    ServerManager serverManager = new ServerManager();
    ApplicationPool appPool = serverManager.ApplicationPools["Test_AppPool"];
    if (appPool != null)
    {
        if (appPool.State == ObjectState.Stopped)
        {
            appPool.Start();
        }
        else
        {
            appPool.Recycle();
        }
    }
}

这有两个问题:

1) 我在尝试运行以下代码时遇到错误:"Filename:redirection.config错误:由于权限不足,无法读取配置文件"我在localhost中遇到了此错误,但我想我也会在托管的Azure环境中遇到此错误?我能绕过这个吗?

2) 第二个问题是,我可能不知道应用程序池的名称是什么,所以我需要用程序来弄清楚。我发现了这样的东西:http://www.logue.com.ar/blog/2008/02/find-and-recycle-current-application-pool-programmatically-for-iis-6/但它使用ActiveDirectory,并且我在主机上没有AD的登录详细信息。。。至少我不知道。。。它再次托管在Azure网站中。

所以问题是,我如何获得Azure中当前应用程序池的名称和名称并回收它?

顺便说一句,我在Flush和当前Response之后的Application_EndRequest中的Global.asax中这样做。有更好的方法吗?

如何通过程序获取当前IIS应用程序池的名称,而不是ActiveDirectory

到目前为止,我能找到的最接近的是(在这里找到:https://stackoverflow.com/a/1081902/550975)

HttpRuntime.UnloadAppDomain();

它只是重新启动app而不是app pool。然而,这可能符合我的目的。。。我们拭目以待。我仍然希望有人能得到真正的答案,如果发生这样的事情,我会把它标记为"接受的答案"。