如何:实现运行状况监视自定义提供程序示例

更新:2007 年 11 月

自定义 ASP.NET 运行状况监视提供程序示例 主题中的示例阐释了如何创建用来处理 ASP.NET 运行状况事件的自定义提供程序。该代码示例还演示如何通过从 BufferedWebEventProvider 类派生来创建向本地文件写入事件信息的自定义提供程序。

该示例特意设计得很简单。目的在于让您完全控制自定义提供程序的基本机制。在实际的方案中,您可以将该代码示例用作应用程序行为的初步探测,以帮助您了解 ASP.NET 运行状况监视所提供的信息。

此示例提供程序演示了下列功能:

  • 通过继承 BufferedWebEventProvider 来构建自定义提供程序。此提供程序包括如下功能:先基于各种因素(如指定的时间间隔)来保存事件信息,然后再记录这些信息。

  • 配置自定义提供程序。

  • 与 Windows 事件查看器交互。

运行此示例要求满足以下条件:

构建自定义事件提供程序

  • 将自定义事件提供程序编译为一个库,并将该库放在 ASP.NET 应用程序的 Bin 目录中,或者为程序集指定强名称,然后将它放在全局程序集缓存 (GAC) 中。

    下面的命令示例演示如何使用命令行编译器来编译该示例。

    vbc /out:<example_name>.dll /t:library <example_name>.vb /r:System.Web.dll /r:System.Configuration.dll /r:<required namespace>
    
    csc /out:<example_name>.dll /t:library <example_name>.cs /r:System.Web.dll /r:System.Configuration.dll  /r:<required namespace>
    
    ms178718.alert_note(zh-cn,VS.90).gif说明:

    如果无法执行编译器命令,则必须在运行命令之前将 .NET Framework 安装路径添加到 Windows PATH 变量中。在 Windows 中,右击“我的电脑”,然后依次单击“属性”“高级”选项卡和“环境变量”按钮。在“系统变量”列表中,双击 Path 变量。在“变量值”文本框中,将一个分号 (;) 添加到文本框中的现有值的末尾,然后键入 .NET Framework 的安装路径。.NET Framework 通常安装在位于 \Microsoft.NET\Framework\版本号 的 Windows 安装文件夹中。

将应用程序配置为使用该示例

  1. 如果您的应用程序的根文件夹中已经包含一个名为 Web.config 的文件,请打开该文件。否则,创建一个名为 Web.config 的文本文件并添加以下文本。

    <?xml version="1.0"?>
    <configuration xmlns="https://schemas.microsoft.com/.NetConfiguration/v2.0">
      <system.web>
      </system.web>
    </configuration>
    
  2. system.web 标记内部,添加以下 healthMonitoring 元素。

    <healthMonitoring
        heartBeatInterval="0" enabled="true">
      <bufferModes>
        <add name="Custom Notification"
          maxBufferSize="10"
          maxFlushSize="5"
          urgentFlushThreshold="2"
          regularFlushInterval="Infinite"
          urgentFlushInterval="00:00:30"
        />
      </bufferModes>
      <providers>
        <add name="SampleEventProvider" type="Samples.AspNet.Management.SampleBufferedEventProvider" 
        buffer="true"
        bufferMode="Custom Notification" />
      </providers>
      <profiles>
        <add name="Custom"
          minInstances="1"
          maxLimit="Infinite"
          minInterval="00:00:00" />
      </profiles>
      <rules>
        <add name="Custom Event Provider"
          eventName="All Events"
          provider="SampleEventProvider"
          profile="Custom" />
      </rules>
    </healthMonitoring>
    

    healthMonitoring 元素中的设置使用 providers 元素添加自定义提供程序,并指定一个 profiles 元素,在本例中,该元素通过限制事件可以引发的次数来保护服务器。该示例还包括一个将事件与配置文件和提供程序关联的 rules 元素。

    type 属性可以像上面的代码示例那样只列出类名,也可以像下面的示例那样列出完全限定的类型:

    type="Samples.AspNet.Management.SampleWebRequestEvent,
    Sample.SampleCustomEventProvider,Version=1.0.0.0,Culture=neutral, 
    PublicKeyToken=xxxxxxxxxxxx"
    
    ms178718.alert_note(zh-cn,VS.90).gif说明:

    只有当该类已安装在 GAC 或 Bin 目录中时,才需要完全限定的类型。

测试自定义 Web 事件

  1. 在浏览器中,请求 Web 应用程序中的任何一页。

    运行应用程序中的任何页都会引发自定义事件。

  2. 若要查看自定义事件数据,请打开由代码中的 logFilePath 变量指定的日志文件。

请参见

概念

自定义 ASP.NET 运行状况监视提供程序示例

ASP.NET 运行状况监视概述

参考

healthMonitoring 元素(ASP.NET 设置架构)

EventLogWebEventProvider

其他资源

创建 ASP.NET 网站