如何以编程方式获取当前IIS应用程序池的名称,而不是ActiveDirectory

时间:2015-11-14 10:01:05

标签: c# asp.net-mvc azure asp.net-web-api2 application-pool

我遇到了Web API的情况,我现在唯一能想到的选择就是recycle app pool我在挖掘并找出真正的原因问题。与此同时,我需要在条件满足后recycle app 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)我在尝试运行此代码时收到错误:“文件名: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中获取名称和当前应用程序池并回收它?

作为旁注,我在Global.asax Application_EndRequest之后的Flush Response中执行此操作。还有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

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

HttpRuntime.UnloadAppDomain();

只是重新启动app,而不是app pool。然而,这可能符合我的目的......我们会看到。我仍然希望有人得到实际的答案,如果发生这样的事情,我会将其标记为已接受的答案。