自定义 HttpModule 示例
下面的自定义模块只是在任何 HTTP 请求的开头返回一个 Web 页消息和并在处理完该请求后返回另一个 Web 页消息。下面的 Init
函数为两个 HttpApplication 事件 BeginRequest 和 EndRequest 注册事件处理程序。每个事件处理程序都编写为模块的私有方法。当已注册的事件被引发时,ASP.NET 将调用适当的处理程序方法,该方法写一个 Web 页然后返回。
[C#] using System; using System.Web; using System.Collections; public class HelloWorldModule : IHttpModule { public String ModuleName { get { return "HelloWorldModule"; } } // In the Init function, register for HttpApplication // events by adding your handlers. public void Init(HttpApplication application) { application.BeginRequest += (new EventHandler(this.Application_BeginRequest)); application.EndRequest += (new EventHandler(this.Application_EndRequest)); } // Your BeginRequest event handler. private void Application_BeginRequest(Object source, EventArgs e) { HttpApplication application = (HttpApplication)source; HttpContext context = application.Context; context.Response.Write("<h1><font color=red>HelloWorldModule: Beginning of Request</font></h1><hr>"); } // Your EndRequest event handler. private void Application_EndRequest(Object source, EventArgs e) { HttpApplication application = (HttpApplication)source; HttpContext context = application.Context; context.Response.Write("<hr><h1><font color=red>HelloWorldModule: End of Request</font></h1>"); } public void Dispose() { } } [Visual Basic] Imports System Imports System.Web Imports System.Collections Public Class HelloWorldModule Implements IHttpModule Public ReadOnly Property ModuleName() As [String] Get Return "HelloWorldModule" End Get End Property ' In the Init function, register for HttpApplication ' events by adding your handlers. Public Sub Init(ByVal application As HttpApplication) Implements IHttpModule.Init AddHandler application.BeginRequest, AddressOf Me.Application_BeginRequest AddHandler application.EndRequest, AddressOf Me.Application_EndRequest End Sub ' Your BeginRequest event handler. Private Sub Application_BeginRequest(ByVal [source] As [Object], ByVal e As EventArgs) Dim application As HttpApplication = CType([source], HttpApplication) Dim context As HttpContext = application.Context context.Response.Write("<h1><font color=red>HelloWorldModule: Beginning of Request</font></h1><hr>") End Sub ' Your EndRequest event handler. Private Sub Application_EndRequest(ByVal [source] As [Object], ByVal e As EventArgs) Dim application As HttpApplication = CType([source], HttpApplication) Dim context As HttpContext = application.Context context.Response.Write("<hr><h1><font color=red>HelloWorldModule: End of Request</font></h1>") End Sub Public Sub Dispose() Implements IHttpModule.Dispose End Sub End Class
如下所示注册该模块:
<configuration> <system.web> <httpModules> <!-- <add name="HelloWorldModule" type="HelloWorldModule, HelloWorldModule" /> --> </httpModules> </system.web> </configuration>