ASP.NET 2.0 还提供了全功能的应用程序监视和健康监视。这个系统是由一个完全可扩展事件模型和一个能将事件发送到多种接收器的事件引擎组成的。举例来说,您可以配置您的 ASP.NET 应用程序来每天发送电子邮件,表明服务器正在运行并且包括可用内存的数量。同样,您可以创建一个链接到未处理异常的健康事件。异常内容、请求标题以及时间和日期都可以被发送到一个错误日志记录数据库。

ASP.NET 2.0 包含了内置的事件,包括心跳、应用程序生存期事件(启动/停止/编译)和错误陷阱事件(未处理异常)。不过,,您可以很容易地在这些基类之上进行构建,以从应用程序重创建并引发您自己的事件。举例来说,您可能创建一个自定义的事件来记录何时第一百个用户单击某一特定的链接。

ASP.NET 2.0 健康监视系统真正强大的功能是,通过 web.config 和 machine.config 文件它是完全可配置的。使用正常的 XML,您能定义事件、定义提供程序(事件接收器),以及将特定的事件发送到特定的提供程序。

创建事件

事件在结构上与异常是类似的。也就是说,除了作为一个消息容器,event 类本身几乎没有功能。在健康监视方面,所有事件都从 Sytstem.Web.Management.WebBaseEvent 继承。不过,您也可以从用于专用目的(如收集 HTTP 请求数据或处理异常)的高级基类派生。

列表 4. 自定义事件

using System;
using System.Web.Management;public class CustomEvent : WebBaseEvent
{public const int EventCode = WebEventCodes.WebExtendedBase + 10;public MyEvent(string message, object eventSource) : base(message, eventSource, EventCode){ }
}

创建自定义事件的最重要部分是提供一个唯一的 EventCode。所有内置事件代码都在 WebEventCodes 枚举中。自定义事件应该有从 WebEventCodes.WebExtendedBase + 1 开始的数字。除此之外创建自定义事件中的唯一常见任务是正确地初始化事件。

使用事件

虽然内置事件自动激发,但您还是可以将代码添加到应用程序以在任何时候启动自定义事件。

列表 5. 引发一个事件

<script runat="server"> void Page_Load(Object sender, EventArgs e) { // Raise a custom event MyEvent myEvent = new MyEvent("loading webevent sample page", this); myEvent.Raise(); }
</script>

当您从 ASP.NET 页面引发一个事件时,您只是创建该事件的一个新实例然后执行 Raise() 方法。Raise() 方法将事件实例自动传递到健康监视引擎。然后此引擎将该事件映射到配置文件和提供程序,并将该事件移交给正确的提供程序。提供程序最终将事件传递到正确的接收器。

配置健康监视

健康监视是在 machine.Config 或 Web.Config 文件中的新的 区域配置的。您可以配置 部分来设置一个周期性报告应用程序状态的 Web 检测信号。您也可以配置应用程序来生成事件,并将该事件通过各种提供程序传递。

配置事件

必须在事件映射区域标识每个事件。事件通过唯一名称和完整类型被标识。事件名称在规则区域是作为链接来使用的。

列表 6. 事件映射区域

<!-- Event mappings define the events that are monitored -->
<eventMappings> <add name="SampleWebRequests" type="Samples.AspNet.SampleWebRequestEvent, SampleWebRequestEvent,Version=0.0.0.0, Culture=neutral, PublicKeyToken=f0c63b9a560d5e5a"/>
</eventMappings>

ASP.NET 2.0 附带几个内置事件,配置为下列名称:

所有事件。所有事件名称捕获任何 WebBaseEvent。这个事件类别是对被健康监视系统捕获的每个事件的一个广泛的 catch-all。

检测信号。检测信号事件使用 WebHeartBeatEvent 提供关于 Web 应用程序状态的定期通知。

应用程序生存期事件。应用程序生存期事件包括启动和停止应用程序,以及重新编译应用程序的部分或全部。这些事件是基于 WebApplicationLifetimeEvent 的,并且在 lifetime 事件发生时,报告日期、时间和当前的状态。

所有错误。所有错误类别收集系统检测到的任何异常或错误。这些事件是基于 WebBaseErrorEvent 的。

基础结构错误。使用 WebErrorEvent 捕获与 ASP.NET 运行库或 IIS 相关的错误。这些事件是所有错误类别的子类,并且主要与系统管理员而不是应用程序开发者相关。

请求处理错误。在请求期间发生的任何错误或异常都会触发一个 WebRequestErrorEvent。这个事件记录了进入的请求以及与处理该请求相关联的错误。请求处理错误也是所有错误类别的一个子集。

所有审核。可使用健康监视系统通过 WebAuditEvent 提供审核尝试。这个事件自动记录 Web 应用程序中活动用户的操作。如果您正在使用模拟,审核事件将帮助您对谁在使用您的应用程序,以及他们是如何在使用保持跟踪。

失败审核WebFailureAuditEvent 是一个特殊的审核事件类型,当一个用户试图使用无效的用户名或密码登录您的 Web 站点时,它就会被触发。当一个对于指定资源用户是无法验证的时候,此事件也会发生。

成功审核WebSuccessAuditEvent 是失败事件的对应,只要用户已验证或执行一些其他需要审核记录的操作就会发生。

自定义事件是易于创建的,尽管您必须向您的应用程序添加代码来引发事件。

配置提供程序

每个提供程序都必须在配置文件中注册。注册一个提供程序需要应用程序的唯一名称和类型。这个类型包含了实际 provider 类的完整强名称 (strong name)。提供程序的名称被用作规则区域中的一个链接。

列表 7. 提供程序

<healthMonitoring Enabled="true" heartBeatInterval="0"> <!-- Providers link health events to various targets such as WMI or SMTP email --> <providers> <add name="WmiEventProvider" type="System.Web.Management.WebWmiEventProvider,System.Web,Version=1.2.3400.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> </providers>

ASP.NET 2.0 附带有 WMI、Windows 事件监视器、SMTP 电子邮件和 SQL Server 数据库的提供程序。通过扩展正确的基类,可以创建自定义提供程序来连接到其他事件接收器。

将事件映射到提供程序

配置健康监视的最后一步是,用规则将事件连接到提供程序。规则提供了在好的事件名称、事件类、提供程序和事件配置文件或者类别之间的一个链接。您也可以使用规则来定义启动特定的事件的一个最短时间间隔。

列表 8. 规则

<!-- Rules link events to providers and profiles, and define intervals for event checking -->
<rules> <add name="Custom Database Events" eventName="CustomDBEvents" provider="WmiEventProvider" profile="Database" minInterval="00:01:00" /> <add name="Standard Web Requests" eventName="All Events" provider="SqlEventProvider" profile="Default" minInterval="00:01:00" /> </rules>
</healthMonitoring> 

规则执行由不同属性配置的若干不同任务:

name。规则名称是友好名称,它会在事件被发送到接收器时出现。

eventNameeventName 映射到一个在 区域中配置的事件。

provider。提供程序是一个到在 区域中配置的提供程序的链接。任何匹配这个规则的事件将通过这个提供程序传递给由该提供程序支持的目标。举例来说,System.Web.Management.SqlWebEventProvider 会自动将事件写入到 SQL Server 数据库。

profile。不同的提供程序将配置文件属性作为显示事件的过滤器来使用。举例来说,电子邮件提供程序可能立即为任何带有“紧急”配置文件的事件发送一个消息,但是也可能只发送带有该日“例行”配置文件事件的汇编的日常电子邮件。

minInterval。一些事件,如检测信号,必须在最短的时间间隔内激发。您可以使用这个属性来设置最小事件时间间隔。

通过这个配置区域,您可以设置各种健康相关事件,并将事件映射到各种提供程序。举例来说,您可能设置一个检测信号,每 10 分钟发送一个 WMI 事件。同样,您可以为任何未捕获的异常设置一个电子邮件警报。

相关文章:
http://support.microsoft.com/default.aspx?scid=kb%3Bzh-cn%3B893664
http://blog.csdn.net/dshpsky/archive/2006/06/18/810893.aspx

转载于:https://www.cnblogs.com/shanyou/archive/2006/07/24/webevent.html

ASP.NET 2.0 中 Web 事件相关推荐

  1. ASP.NET 2.0中Page事件的执行顺序

    Page 执行中将按照如下顺序激活事件: Page.PreInit Page.Init Page.InitComplite Page.PreLoad Page.Load Page.LoadComple ...

  2. 【转】ASP.NET 2.0中Page事件的执行顺序

    有些补充的是,控件的一些事件是在Page的PreRender之前的,比如说SqlDataSource的DataBind,所以在页面PreRender内,是有机会修改这些控件的参数的.但是可以再PreR ...

  3. [导入]ASP.NET 2.0中Page事件的执行顺序

    文章来源:http://blog.csdn.net/21aspnet/archive/2007/03/20/1535517.aspx 转载于:https://www.cnblogs.com/zhaox ...

  4. 在ASP.NET 2.0中使用样式、主题和皮肤

    ASP.NET 2.0的主题和皮肤特性使你能够把样式和布局信息存放到一组独立的文件中,总称为主题(Theme).接下来我们可以把这个主题应用到任何站点,用于改变该站点内的页面和控件的外观和感觉.通过改 ...

  5. 在ASP.NET 2.0中建立站点导航层次

    站点导航提供程序--ASP.NET 2.0中的站点导航提供程序暴露了应用程序中的页面的导航信息,它允许你单独地定义站点的结构,而不用考虑页面的实际物理布局.默认的站点导航提供程序是基于XML的,但是你 ...

  6. 在ASP.NET 2.0中操作数据教程系列

    在ASP.NET 2.0中操作数据教程系列 Scott Mitchell最近完成了为 www.asp.net 网站撰写的<在ASP.NET 2.0中操作数据 (Working with Data ...

  7. [翻译]在asp.net 2.0中使用WebParts

    原文地址:http://dotnetslackers.com/articles/aspnet/UsingWebPartsInASPNet20.aspx [译者改后代码下载] [翻译]在asp.net ...

  8. Asp.Net 2.0中的客户端脚本

    在使用 ASP.NET 的时候,我们仍然在许多情况下需要使用客户端脚本.以下是笔者根据自己的经验和一些粗浅的研究,对此作一个简要的总结. 一.在 HTML 里直接写脚本 这个方法是最简单的,直到如今我 ...

  9. ASP.NET 2.0 中的资源与本地化

    转自MSDN 下载本文的代码:BasicInstincts2006_08.exe (878KB) 本页内容 控制页面级别的区域性设置 使用配置文件跟踪语言首选项 ASP.NET 2.0 中的资源文件 ...

  10. ASP.NET 2.0 中的代码隐藏和编译

    ASP.NET 2.0 中的代码隐藏和编译      Fritz Onion 本页内容 代码隐藏 编译 程序集生成 小结 当我撰写本专栏的时候,Microsoft® .NET Framework 2. ...

最新文章

  1. 区块链人才月均薪酬1.6W?
  2. 决策树 python 结果画图_scikit-learn决策树的python实现以及作图
  3. js判断浏览器是否支持webGL
  4. (三)虚拟化技术重点笔记与总结
  5. modelsim与modelsim_altera使用的一些区别
  6. QT Creator应用程序开发——QT程序设计基本知识
  7. ASP.NETCore的Kestrel服务器
  8. LDAP命令介绍---ldappasswordmodify口令修改操作
  9. 海洋zyapi.php,海洋cms自带资源发布api插件和第三方资源站接入办法说明
  10. Ubuntu中zabbix 4.2.6监控postgresql数据库
  11. bzoj 1010: [HNOI2008]玩具装箱toy
  12. 白帽子讲Web安全学习之XSS
  13. 艾永亮:这家酒店如何让你毫不犹豫点上五星好评?
  14. Visual Studio 2012下载安装方法
  15. cactiez mysql_CactiEz 无法登陆 、重启不画图处理
  16. 随笔-人生第一份工作离职了
  17. 吃透Kafka六:topic 创建过程
  18. 换服务器皮肤文件,lol怎么替换皮肤文件
  19. bc伐木机器人_1+X | 工业机器人操作编程平台(HB-CZBC-C10)
  20. php 野生动物公益保护系统

热门文章

  1. python对象之间的关系
  2. Linux下如何查看高CPU占用率线程 专题
  3. (转)程序员如何快速准备面试中的算法
  4. mongodb安装指南 及使用
  5. 一些碰到的陌生的技术名词搜集(持续更新……)
  6. TurboFan-Sea of Nodes概念讲解
  7. 2.架构设计的敏捷视图
  8. 确认从博客园搬家到FPA博客园
  9. 数据--第51课 - 二叉排序树
  10. 【译】你不知道的Chrome调试工具技巧 第六天:command 菜单