カスタム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>