【问题标题】:How to get name of current IIS app pool programatically, not ActiveDirectory如何以编程方式获取当前 IIS 应用程序池的名称,而不是 Active Directory
【发布时间】:2015-11-14 10:01:04
【问题描述】:

我的Web API 遇到了一种情况,我现在能想到的唯一选择是recycleapp 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中当前应用池的名称和名称并回收呢?

作为旁注,我在 Application_EndRequest 中的 Global.asax 中执行此操作,在 Flushing 当前的 Response 之后。有没有更好的办法?

【问题讨论】:

  • 您是否尝试在 Azure Web 应用中使用 MWA?
  • 我猜是的?我只是想让这个工作......
  • Azure Web 应用程序试图对您隐藏后端基础设施,因此我认为它们不会让您访问所有 MWA API 访问权限(它们不应该因为您的调用可能会破坏其他应用程序) .
  • 好的,那我该如何重启我自己的应用池呢?
  • 为什么需要回收池?这才是你真正想要解决的问题,对吧?

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


【解决方案1】:

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

HttpRuntime.UnloadAppDomain();

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    • 2014-07-17
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多