有兩種方法,本質是一樣的。一種是寫代碼,把實作IHttpModule接口的類放在App_Code檔案夾中。還有一種方法是直接把該類放到一個項目中,編譯後得到的dll放入Bin檔案夾。
具體步驟如下:
實作 <b>IHttpModule</b> 接口。您的類定義應如下所示:
public class HelloWorldModule: IHttpModule
決定要預訂哪些事件。下表概括了可從 <b>HttpApplication</b> 對象預訂的事件:
<b>AcquireRequestState</b>:調用此事件可允許子產品擷取或建立請求的狀态(例如,會話)。
<b>AuthenticateRequest</b>:當安全子產品在處理請求前需要對使用者進行身份驗證時,調用此事件。
<b>AuthorizeRequest</b>:當請求需要經過授權時,安全子產品就會調用此事件。此事件是在身份驗證後調用的。
<b>BeginRequest</b>:調用此事件以通知子產品新請求即将開始。
<b>Disposed</b>:調用此事件以通知子產品由于某種原因應用程式即将終止。允許子產品進行内部清理。
<b>EndRequest</b>:調用此事件以通知子產品該請求即将結束。
<b>Error</b>:調用此事件以通知子產品在請求處理過程中發生了錯誤。
<b>PostRequestHandlerExecute</b>:調用此事件以通知子產品處理程式已完成對請求的處理。
<b>PreRequestHandlerExecute</b>:調用此事件以通知子產品将調用用于處理請求的處理程式。
<b>PreSendRequestContent</b>:調用此事件以通知子產品将向用戶端發送請求内容。
<b>PreSendRequestHeaders</b>:調用此事件以通知子產品将向用戶端發送 HTTP 頭。
<b>ReleaseRequestState</b>:調用此事件以允許子產品在處理程式完成對請求的處理後釋放狀态。
<b>ResolveRequestCache</b>:在身份驗證後調用此事件。緩存子產品使用此事件确定該請求是否應該由其緩存處理,或者處理程式是否應該處理該請求。
<b>UpdateRequestCache</b>:在處理程式響應後調用此事件。緩存子產品應根據該響應來更新其緩存。
本示例使用了 <b>BeginRequest</b> 事件。
按以下方式實作 <b>IHttpModule</b> 接口的 <b>Init</b> 和 <b>Dispose</b> 方法:
public void Init(HttpApplication application)
{
application.BeginRequest +=
(new EventHandler(this.Application_BeginRequest));
application.EndRequest +=
(new EventHandler(this.Application_EndRequest));
}
public void Dispose(){ }
定義這兩個事件方法:
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>");
}
private void Application_EndRequest(Object source, EventArgs e)
HttpApplication application = (HttpApplication)source;
context.Response.Write("<hr><h1><font color=red>" +
"HelloWorldModule: End of Request</font></h1>");
配置web.config檔案
<configuration>
<system.web>
<httpModules>
<add name="HelloWorldModule" type="HelloWorldModule"/> 如果用的是引用項目的話,<add name="HelloWorldModule" type="HelloWorldModule.HelloWorldModule,HelloWorldModule"/>
</httpModules>
</system.web>
</configuration>
然後在執行頁面的時候,都會執行這2個注冊的事件。
本文轉自cnn23711151CTO部落格,原文連結: http://blog.51cto.com/cnn237111/591824,如需轉載請自行聯系原作者