如何:实现和引发自定义 ASP.NET 运行状况监视事件
更新:2007 年 11 月
本节中的示例阐释如何引发 ASP.NET 自定义运行状况监视事件。向应用程序添加自定义事件时,必须考虑下列事项:
如何设置运行状况监视事件的范围。如果要在服务器上的所有应用程序中引发该事件,则必须将该事件的范围配置为计算机范围。首选方法(如该示例所示)是创建一个引发该自定义事件的 HTTP 模块。然后在计算机级别安装该模块。该模块在安装它的计算机上的所有应用程序中调用。
何时引发运行状况监视事件。您可以在处理请求期间的任意时刻引发运行状况监视事件。引发自定义 WebRequestEvent 的典型时间是在系统的 BeginRequest 事件或 EndRequest 事件中。
此示例演示以下功能:
生成一个引发自定义运行状况监视事件的 HTTP 模块。
将应用程序配置为使用标准 EventLogWebEventProvider 来记录事件。
使用标准 EventLogWebEventProvider 来记录事件信息。
运行此示例要求满足以下条件:
在运行 Web 应用程序的服务器上安装了 Internet 信息服务 (IIS)。有关更多信息,请参见如何:在 IIS 5.0 和 6.0 中创建和配置虚拟目录 或在 https://www.microsoft.com/china 上搜索 Internet Information Services。
一个 ASP.NET Web 应用程序。有关更多信息,请参见 ASP.NET 网站布局。
引发自定义 ASP.NET 运行状况监视事件示例 中的代码。
生成 HTTP 模块
将 引发自定义 ASP.NET 运行状况监视事件示例 中的源代码放入 ASP.NET 应用程序的 App_Code 目录中名为 SampleModule.vb 或 SampleModule.cs 的文件中。
说明:
如果应用程序的 App_Code 目录中已经有源代码,则必须添加使用与目录中现有代码相同的语言编写的自定义事件提供程序版本。
当应用程序中的页被请求时,ASP.NET 将编译自定义事件提供程序代码。有关更多信息,请参见 ASP.NET 网站中的共享代码文件夹。
- 或 -
将自定义事件提供程序编译为一个库,并将该库放在 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>
说明:
如果无法执行编译器命令,则必须在运行命令之前将 .NET Framework 安装路径添加到 Windows PATH 变量中。在 Windows 中,右击“我的电脑”,然后依次单击“属性”、“高级”选项卡和“环境变量”按钮。在“系统变量”列表中,双击 Path 变量。在“变量值”文本框中,将一个分号 (;) 添加到文本框中的现有值的末尾,然后键入 .NET Framework 的安装路径。.NET Framework 通常安装在位于 \Microsoft.NET\Framework\版本号 的 Windows 安装文件夹中。
将 ASP.NET 应用程序配置为使用此示例
如果 ASP.NET 应用程序的根文件夹中已经存在名为 Web.config 的文件,请打开该文件。否则,请创建一个名为 Web.config 的文本文件,并将以下文本复制到该文件中:
<?xml version="1.0"?> <configuration xmlns="https://schemas.microsoft.com/.NetConfiguration/v2.0"> <system.web> </system.web> </configuration>
在 system.web 标记中,添加下面的 httpModules 元素和 healthMonitoring 元素(ASP.NET 设置架构)元素。
<httpModules> <add name="Raising Custom Web Events" type="Samples.AspNet.Management.CustomWebEvents" /> </httpModules> <healthMonitoring heartbeatInterval="0" enabled="true"> <eventMappings> <add name="SampleWebRequestEvent" type="Samples.AspNet.Management.SampleWebRequestEvent" /> </eventMappings> <profiles> <add name="Custom" minInstances="1" maxLimit="Infinite" minInterval="00:00:00" /> </profiles> <rules> <clear /> <add name="Custom Web Request Event" eventName="SampleWebRequestEvent" provider="EventLogProvider" profile="Custom" /> </rules> </healthMonitoring>
type 属性可以只列出类名,如前面的代码示例所示;也可以列出完全限定的类型,如下面的示例所示:
type="Samples.AspNet.Management.SampleWebRequestEvent, Sample.SampleModule,Version=1.0.0.0,Culture=neutral, PublicKeyToken=xxxxxxxxxxxx"
说明:
只有当该类已安装在 GAC 或 Bin 目录中时,才需要完全限定的类型。
测试自定义 Web 事件
在运行 Web 应用程序的服务器上运行 Windows 事件查看器。为此,请单击**“开始”,再单击“运行”,在“运行”对话框中键入 eventvwr,然后单击“确定”**。
在事件查看器的事件日志树中,单击**“应用程序”**。
通过单击**“操作”再单击“刷新”**来刷新 Application 日志的视图。
记录最新事件的日期、时间和名称。您将在后面使用该信息来验证是否引发了您的自定义事件。
在浏览器中,请求 Web 应用程序中的任何一页。
要在应用程序中使用自定义事件,请在浏览器中运行应用程序中的某一页。然后可以检查自定义事件创建的结果。
再次刷新 Application 日志,验证是否已记录自定义事件发出的运行状况事件信息。
请参见
任务
概念
参考
healthMonitoring 元素(ASP.NET 设置架构)