次の方法で共有


カスタム HttpModule の例

次のカスタム モジュールは、HTTP 要求の開始時点で Web ページ メッセージを返し、要求処理の完了後にもう一度 Web ページ メッセージを返します。下の Init 関数は、BeginRequestEndRequest という 2 つの HttpApplication イベントのイベント ハンドラを登録します。各ハンドラは、モジュールのプライベート メソッドとして記述されます。登録されたイベントが発生すると、ASP.NET は適切なハンドラ メソッドを呼び出し、そのメソッドは Web ページを作成して返します。

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>

参照

HTTP ランタイム サポート | HttpModule | パブリック イベントの処理 | イベントの処理と発生