透過自訂HttpModule連接HttpApplication事件
直接演示範例,解說如下。
一、新開一個Empty的web專案
二、額外新增預設的前端頁面與後端程式
三、撰寫Class1後端程式
using System;
using System.Web;
namespace WebApplication2
{
public class Class1 : IHttpModule
{
public Class1()
{
// Class constructor.
}
public void Dispose()
{
// Add code to clean up the
// instance variables of a module.
}
// Classes that inherit IHttpModule
// must implement the Init and Dispose methods.
public void Init(HttpApplication app)
{
app.AcquireRequestState += new EventHandler(app_AcquireRequestState);
}
// Define a custom AcquireRequestState event handler.
public void app_AcquireRequestState(object o, EventArgs ea)
{
HttpApplication httpApp = (HttpApplication)o;
HttpContext ctx = HttpContext.Current;
ctx.Response.Write("<p>Executing AcquireRequestState</p>");
}
}
}
既然是要自訂HttpModule則必先繼承IHttpModule介面,而且實作Dispose與Init方法。
public interface IHttpModule
{
void Dispose();
void Init(HttpApplication context);
}
接下來則於HttpApplication類別的AcquireRequestState事件註冊自訂事件,
整個Class1.cs就是自訂HTTP模組,而這個模組的功能為在AcquireRequestState事件被觸發時,
對頁面寫下一段文字。
四、修改Web.config
注意,需要在Web.config內登錄自訂HTTP模組名稱,
才能讓IIS在每個request都呼叫web.config上所登錄的managed-code modules。
如果你的IIS環境是7.0以上的話,通常預設為Integrated mode,則適用以下設定
<configuration> <system.webServer> <modules> <add type="WebApplication2.Class1" name="Class1" /> </modules> </system.webServer> </configuration>
參考資料: