カスタムHttpModuleの例

3722 ワード

次のカスタムモジュールは、任意のHTTP要求の先頭に1つのWebページメッセージを返し、その要求を処理した後に別のWebページメッセージを返すだけです.次のInit関数は、2つの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>