如何检测IIS应用程序池启动

时间:2013-10-10 20:17:25

标签: iis application-pool

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

由于其应用初始化模块,II7.5中不需要这样做。

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

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

我意识到可能存在应用程序池灾难性地失败并且没有记录的情况。

由于

1 个答案:

答案 0 :(得分:1)

对于IIS 7,您可以使用Microsoft.Web.Administration dll.您可以检查,创建池的状态programaticaly。 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 Check the status of an application pool (IIS 6) with C#