ASP.NET 2.0 中 Web 事件

简介:
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 事件。同样,您可以为任何未捕获的异常设置一个电子邮件警报。





本文转自 张善友 51CTO博客,原文链接:http://blog.51cto.com/shanyou/75038,如需转载请自行联系原作者
目录
相关文章
|
5月前
|
中间件 Go
Golang | Gin:net/http与Gin启动web服务的简单比较
总的来说,`net/http`和 `Gin`都是优秀的库,它们各有优缺点。你应该根据你的需求和经验来选择最适合你的工具。希望这个比较可以帮助你做出决策。
199 35
|
9月前
|
开发框架 前端开发 JavaScript
ASP.NET Web Pages - 教程
ASP.NET Web Pages 是一种用于创建动态网页的开发模式,采用HTML、CSS、JavaScript 和服务器脚本。本教程聚焦于Web Pages,介绍如何使用Razor语法结合服务器端代码与前端技术,以及利用WebMatrix工具进行开发。适合初学者入门ASP.NET。
|
11月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
606 3
|
9月前
|
运维 前端开发 C#
一套以用户体验出发的.NET8 Web开源框架
一套以用户体验出发的.NET8 Web开源框架
243 7
一套以用户体验出发的.NET8 Web开源框架
|
8月前
|
开发框架 数据可视化 .NET
.NET 中管理 Web API 文档的两种方式
.NET 中管理 Web API 文档的两种方式
130 14
|
9月前
|
开发框架 .NET PHP
ASP.NET Web Pages - 添加 Razor 代码
ASP.NET Web Pages 使用 Razor 标记添加服务器端代码,支持 C# 和 Visual Basic。Razor 语法简洁易学,类似于 ASP 和 PHP。例如,在网页中加入 `@DateTime.Now` 可以实时显示当前时间。
|
12月前
|
开发框架 监控 前端开发
在 ASP.NET Core Web API 中使用操作筛选器统一处理通用操作
【9月更文挑战第27天】操作筛选器是ASP.NET Core MVC和Web API中的一种过滤器,可在操作方法执行前后运行代码,适用于日志记录、性能监控和验证等场景。通过实现`IActionFilter`接口的`OnActionExecuting`和`OnActionExecuted`方法,可以统一处理日志、验证及异常。创建并注册自定义筛选器类,能提升代码的可维护性和复用性。
170 3
|
.NET 开发框架
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
191 7
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
371 0

热门文章

最新文章