如何正确和以编程方式回收IIS服务器上的应用程序池

时间:2017-05-11 18:42:10

标签: asp.net iis recycle

这就是我目前正在做的事情

public static string RecycleSite(string siteName)
{
    try
    {
        using (ServerManager iisManager = new ServerManager())
        {
            SiteCollection sites = iisManager.Sites;
            foreach (Site site in sites)
            {
                if (site.Name == siteName)
                {
                    ObjectState os = iisManager.ApplicationPools[site.Applications["/"].ApplicationPoolName].Recycle();
                    return "Recycle Successful";
                }
            }
        }
        return "Recycle Unsuccessful";
    }
    catch(Exception ex)
    {
        return "Recycle Unsuccessful: " + ex;
    }

我已经查看了多个其他主题,但似乎没有人能找到我想要的答案。我想使用服务器管理器类来回收特定的IIS站点。此当前解决方案执行“循环”,但它也会杀死仍然存在的任何活动连接。 IIS管理器已设置好,因此我可以在当前实例上存在持久连接时开始新实例,直到这些连接自行关闭。

我的解决方案是正确的还是我需要以更直接的方式进行回收?这是控制台应用程序的一部分,该应用程序设置为以管理员身份运行,以便我正在调用的其他服务可以位于用户帐户下(出于安全原因)。在Server 2012 R2上使用IIS 8.5。

0 个答案:

没有答案