2

有没有办法检测 IIS(6 或 7.0)应用程序池何时启动(或确实关闭)或通过 IIS 管理器手动回收?

由于其应用程序初始化模块,这在 II7.5 中不是必需的。

但我需要知道应用程序池是否关闭,以便我可以重新启动它。并在它启动时对该池上的 Web 应用程序进行预热。

我想知道是否可以使用调度程序监视服务器日志中的事件,但是当手动关闭应用程序池时我无法找到日志条目。

我意识到可能存在应用程序池发生灾难性故障并且没有记录的情况。

谢谢

4

1 回答 1

1

对于 IIS 7,您可以使用Microsoft.Web.Administration dll。您可以以编程方式检查、创建池的状态。ApplicationPool.State 为您提供应用程序池的状态。

这是 iis.net 添加池的示例。

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Web.Administration;
namespace MSWebAdmin_Application
{       
    class Program
    {
        static void Main(string[] args)
        {
            ServerManager serverManager = new ServerManager();
            Site site = serverManager.Sites["Racing Cars Site"];
            site.Name = "Racing Site";
            site.Applications[0].VirtualDirectories[0].PhysicalPath = "d:\\racing";
            serverManager.ApplicationPools.Add("RacingApplicationPool");
            serverManager.Sites["Racing Site"].Applications[0].ApplicationPoolName = "RacingApplicationPool";
            ApplicationPool apppool = serverManager.ApplicationPools["RacingApplicationPool"];
            apppool.ManagedPipelineMode = ManagedPipelineMode.ISAPI;
            serverManager.CommitChanges();
    apppool.Recycle();
        }
    }
} 

http://www.iis.net/learn/manage/scripting/how-to-use-microsoftwebadministration

对于 IIS 6 ,使用 C# 检查应用程序池 (IIS 6) 的状态

于 2013-10-10T20:29:32.173 回答