Web 事件--向SQL Server 数据库、Windows 事件日志、WMI 命名空间或电子邮件输出事件

原创 2006年06月18日 20:12:00

Web 事件
Web 事件功能为发出运行时事件提供了一个通用框架,用以指示应用程序中发生的值得注意的操作,报告应用程序运行状况或任何其他值得注意的信息。该功能可使管理员通过配置中的事件订阅确切地确定他们感兴趣的事件,并指定事件通过哪些信道传送。该功能包括多种现成可用的信道提供程序,它们适用于不同的方案:
将事件保存到 Microsoft? SQL Server
通过电子邮件发送事件报告
将事件写入 Windows? 事件日志
通过 WMI 转发事件
ASP.NET 2.0 自身也使用 Web 事件功能提供对各种运行时功能的运行状况报告、审核和检测。任何人都能开发并引发自定义事件类型以进一步检测他们的应用程序。

 


在下面的示例中,应用程序被配置为将所有发出的 Web 事件发送到 SQL Server 提供程序。该页在加载时将引发派生自 WebEventBase 的自定义事件类型的实例,并使用数据源控件直接从 SQL Server 事件表中读取事件。显示事件列表的 GridView 还显示了一些 ASP.NET 在请求处理周期中自己生成的事件。


C# Health Monitoring Events
 
事件和事件提供程序
Web 事件是在运行时以相应的信息构造的各种 Web 事件基类的实例,并且指定了事件代码/详细信息代码,这些代码可用来标识该事件所要表示的情况。ASP.NET 有一组用来检测在基础结构中引发的多种情况的基类,并且它允许应用程序以自定义事件类来扩展这些基类,这些自定义事件类表示该应用程序选择报告的任意信息。这些自定义事件随后可由应用程序代码通过 Web 事件引擎创建并引发。

ASP.NET 包含下列 Web 事件基类(没有全部列出),它们位于 System.Web.Management 命名空间中:

功能 说明
 WebBaseEvent  所有事件的事件基类。包含所有事件必需的属性,如事件代码、事件详细信息代码、事件引发的日期和时间、序列号、事件消息和事件详细信息。
 WebManagementEvent  管理事件的事件基类,如应用程序生存期、请求、错误和审核事件。
 WebHeartbeatEvent  由应用程序以固定的时间间隔生成的事件,用以捕获有用的运行时状态信息。
 WebAuditEvent  安全审核事件的基类,这些事件用于标记授权失败、解密失败等情况。
 WebRequestEvent  所有信息请求事件的基类。
 WebBaseErrorEvent  所有指示错误情况的事件的基类。

当事件引发时,它们由 Web 事件引擎进行处理,该引擎将这些事件路由到一个或多个表示事件使用者的 Web 事件提供程序,事件使用者被配置为侦听运行状况监视配置中的特定事件。Web 事件引擎还提供了其他一些服务,如对事件进行限流以避免不可承受的事件量。

Web 事件领域中的提供程序其实是可插接的事件使用者。ASP.NET 2.0 提供了多种现成可用的内置提供程序,并且使您能够实现和配置您自己的自定义提供程序。所包含的提供程序可以向 Microsoft SQL Server 数据库、Windows 事件日志、WMI 命名空间或电子邮件输出事件。

配置事件
注意:本节中,所有的配置都是指节中的元素(除非另有说明)。

为了收到事件,需要创建一个将事件集映射到事件使用者的订阅,这由 Web 事件提供程序实现。订阅有下列几个部分:

事件映射。用于定义一个事件集以及可用来在订阅中引用该事件集的名称,通过一个事件基类和一个可选的事件代码范围来标识该事件集,此事件集中的所有事件必须派生自该事件基类。例如,下面的映射创建了一个事件集,其中包含事件代码从 0 到 1000 的所有审核事件:
<eventMappings>

  <add name="Audit Events" startEventCode="0" endEventCode="1000" type="System.Web.Management.WebAuditEvent" />

</eventMappings>

事件订阅规则。用于定义事件集与将处理该事件集的 Web 事件提供程序之间的映射。该规则还可以选择指定一个包含事件限流信息的配置文件,以限制该规则处理的事件量,或者直接指定这些设置。

例如,下面的规则将我们在前面创建的审核事件集通过信道发送到随 ASP.NET 2.0 安装的默认事件日志提供程序:
<rules>

  <add name="MyFirstSubscription" eventName="Audit Events" provider="EventLogProvider" />

</rules>

提供程序。用于定义将使用事件的事件信道的提供程序。此处,您可以配置 ASP.NET 2.0 所包含的默认提供程序之一,或者指定您自己的派生自 Web 事件提供程序基类的类型。

例如,下面的配置默认情况下存在于 ASP.NET 2.0 安装中,以便使 ASP.NET 事件日志提供程序能够将事件写入 Windows 事件日志:
<providers>

  <add name="EventLogProvider" type="System.Web.Management.EventLogWebEventProvider" />

</providers>

您还可以配置其他设置以进一步控制节中的 Web 事件的行为,如设置配置文件以指定应用于规则的限流设置,以及用于缓冲的提供程序的缓冲模式。


创建自定义事件
为了创建自定义事件类型,您必须从某个可派生的 Web 事件基类派生您自己的事件类。然后,可以在运行时创建并引发此事件的实例,并如上所述配置对该事件的订阅。

下面的示例使用自定义事件代码和消息创建一个自定义事件,并且在页事件处理程序中将引发此事件的一个实例:
// in the code directory, or your application source code

class MySampleEvent : System.Web.Management.WebBaseEvent

{

  public const int MySampleEventCode = 200001;

 

  public MySampleEvent(String message) : base(message, null, MySampleEventCode) {}

}

 

// in an aspx page

void Page_Load()

{

  // create an instance of the event

  MySampleEvent e = new MySampleEvent("In Page_Load()");

  // raise the event to the web event engine

  e.Raise();

}

检测应用程序
为了检测应用程序以进行运行时监视,您应该创建派生自正确的 Web 事件基类的自定义事件类,并包含对应用程序有意义的附加信息。然后,您可以在您想检测的代码中创建并引发这些事件的实例。

在应用程序或其组件的内部创建并引发了您自己的事件之后,您可以配置事件订阅以通过信道将值得注意的特定事件发送到相应的提供程序。


事件限流
事件限流是指限制事件传入提供程序的速率以避免提供程序负担过重,或者限制用来传输、处理、存储或显示事件的输出方式。限流设置应用于规则级别。

您可以通过在每条规则的基础上指定限流设置,或者创建定义一组限流设置的配置文件来对事件进行限流。您可以随意使用的限流能力包括对发生 N 次的事件只记录一次,在给定时期内只记录一次事件,或者只记录某个给定事件发生的前 N 次。

下面的示例修改了审核事件订阅规则,以保证最大事件速率为每秒一个事件:
<rules>

  <add name="MyFirstSubscription" eventName="Audit Events" provider="EventLogProvider" minInterval="00:00:01" />

</rules>

注意:限流会丢失事件,因此在为审核事件之类的敏感事件设置限流设置时要格外小心。限流的替代方式是使用特定提供程序的缓冲功能,该功能以延迟事件发送为代价避免丢失事件。

下面示例将限流设置放置在一个配置文件中,该配置文件随后可在多条规则间共享:
<profiles>

  <add name="MyProfile" ="00:00:01" />

</profiles>

 

<rules>

  <add name="MyFirstSubscription" eventName="Audit Events" provider="EventLogProvider" profile="MyProfile" />

</rules>

你所忽视的jQuery on事件 Event.namespace 添加命名空间

当我们阅读jq插件源码的时候,有没有见过$.on("input.update.bv")这样的事件?这是什么意思呢? namespace属性用于返回触发该事件时所指定的命名空间。当需要为同一个元素、同一...
  • u013938465
  • u013938465
  • 2017年02月23日 14:09
  • 1003

用SQL Server事件探查器创建跟踪

SQL Server事件探查器(Profiler)可以帮助数据库管理员跟踪SQL Server数据库所执行的特定事件,监视数据库的行为;并将这些有价值的信息保存到文件或表,以便以后用来分析解决数据库出...
  • monmobear053
  • monmobear053
  • 2014年05月25日 15:34
  • 1979

Winserver 2008事件日志-事件ID详解

最近在研究服务器的安全性,发现有未知登录,然后开始研究,当然第一步是需要读懂事件日志的,winserver上的事件是按照事件ID来标示的。   审计目录服务访问   4934 - Active D...
  • Jason_WangYing
  • Jason_WangYing
  • 2017年03月16日 10:35
  • 3811

Jquery的on,off事件详解,如何利用命名空间来解绑特定的事件

最近在学习写一个基于jquery的js插件时,因为需要用到键盘按键事件,所以就用了bind的方法去绑定元素事件。可用的时候发现,在绑定事件和解绑事件时bind的方法无法满足我的需求。...
  • zpjshiwo77
  • zpjshiwo77
  • 2015年11月06日 17:03
  • 468

Sql Server 2008 配置管理器 无法连接WMI提供程序

好长一段时间没有碰SQL了,由于要做PB的毕业设计,结果打开数据库的时候却没办法连接了,不能连接的情况之前也遇到过,去配置管理器将相应的项启动即可,可是当我打开配置管理器的时候,有些吃惊,因为跳出来一...
  • jly4758
  • jly4758
  • 2014年03月06日 20:12
  • 18011

Win8怎么查看系统事件日志|Win8查看系统日志的方法

我们在使用微软研发的Win8操作过程当中,因为某些的原因需要查看Win8中的系统事件日志,但是又不知道该如何操作,下面我就给大家介绍下Win8查看系统事件日志方法。   1、按快捷键...
  • xin0_0xin
  • xin0_0xin
  • 2015年09月08日 09:52
  • 2063

使用ADO.NET对SQL Server数据库进行访问

在上一篇博客中我们给大家简单介绍了一下VB.NET语言的一些情况,至于理论知识的学习我们可以利用VB的知识体系为基础,再将面向对象程序设计语言的知识进行融合便可进行编程实战。          如果我...
  • u010929604
  • u010929604
  • 2014年06月01日 20:05
  • 4464

通过SQL Server的扩展事件来跟踪SQL语句在运行时,时间都消耗到哪儿了?

从网上找的链接: http://blogs.msdn.com/b/sqlsakthi/archive/2011/02/20/sql-query-slowness-troubleshooting-usi...
  • yupeigu
  • yupeigu
  • 2013年09月03日 19:48
  • 1855

WMI技术介绍和应用——事件通知

本文主要讲解如何使用C++编写一个WMI事件查询类
  • breaksoftware
  • breaksoftware
  • 2016年02月05日 16:09
  • 2265

oracle命名空间

不知道大家在学习的过程中有没有注意到过这样的一个问题,当你创建一个表,名字为TEST。也许过几天当你做索引或者视图实验的时候,想再次创建一个名字为TEST的索引或视图的时候,ORACLE会提示你已经存...
  • Isildur2010
  • Isildur2010
  • 2014年11月19日 09:53
  • 1087
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Web 事件--向SQL Server 数据库、Windows 事件日志、WMI 命名空间或电子邮件输出事件
举报原因:
原因补充:

(最多只允许输入30个字)