3.httphandler和httpmodule各類的做用以及工做原理?

  首先應該知道的是ASP.NET 請求處理過程是基於管道模型的,這個管道模型是由多個HttpModule和HttpHandler組成,ASP.NET 把http請求依次傳遞給管道中各個HttpModule,最終被HttpHandler處理,處理完成後,再次通過管道中的HTTP模塊,把結果返回給客戶端。咱們能夠在每一個HttpModule中均可以干預請求的處理過程。服務器

  httpmodule介紹cookie

  httpmodule主要做用是向httpApplication對象中註冊自定義事件,能夠是受權驗證等等ui

  1.全部httpmodule都是實現了System.Web.IhttpModule接口對象

  2.重寫方法主要有兩個:接口

    (1)Init 方法:系統初始化的時候自動調用,這個方法容許HTTP模塊向HttpApplication 對象中的事件註冊本身的事件處理程序。
    (2)Dispose方法: 這個方法給予HTTP模塊在對象被垃圾收集以前執行清理的機會。此方法通常無需編寫代碼。事件

  3.容許註冊的事件有如下這些:資源

  1. AcquireRequestState 當ASP.NET運行時準備好接收當前HTTP請求的對話狀態的時候引起這個事件。
  2. AuthenticateRequest 當ASP.NET 運行時準備驗證用戶身份的時候引起這個事件。 
  3. AuthorizeRequest 當ASP.NET運行時準備受權用戶訪問資源的時候引起這個事件。 
  4. BeginRequest 當ASP.NET運行時接收到新的HTTP請求的時候引起這個事件。 
  5. Disposed 當ASP.NET完成HTTP請求的處理過程時引起這個事件。 
  6. EndRequest 把響應內容發送到客戶端以前引起這個事件。 
  7. Error 在處理HTTP請求的過程當中出現未處理異常的時候引起這個事件。 
  8. PostRequestHandlerExecute 在HTTP處理程序結束執行的時候引起這個事件。 
  9. PreRequestHandlerExecute 在ASP.NET開始執行HTTP請求的處理程序以前引起這個事件。在這個事件以後,ASP.NET 把該請求轉發給適當的HTTP處理程序。 
  10. PreSendRequestContent 在ASP.NET把響應內容發送到客戶端以前引起這個事件。這個事件容許咱們在內容到達客戶端以前改變響應內容。咱們可使用這個事件給頁面輸出添加用於全部頁面的內容。例如通用菜單、頭信息或腳信息。 
  11. PreSendRequestHeaders 在ASP.NET把HTTP響應頭信息發送給客戶端以前引起這個事件。在頭信息到達客戶端以前,這個事件容許咱們改變它的內容。咱們可使用這個事件在頭信息中添加cookie和自定義數據。 
  12. ReleaseRequestState 當ASP.NET結束所搜有的請求處理程序執行的時候引起這個事件。 
  13. ResolveRequestCache 咱們引起這個事件來決定是否可使用從輸出緩衝返回的內容來結束請求。這依賴於Web應用程序的輸出緩衝時怎樣設置的。 
  14. UpdateRequestCache 當ASP.NET完成了當前的HTTP請求的處理,而且輸出內容已經準備好添加給輸出緩衝的時候,引起這個事件。這依賴於Web應用程序的輸出緩衝是如何設置的。

  4.自定義的httpmodule要使用必須在Web.Conofig中註冊,註冊代碼以下it

   <httpModules>
           <add name="TestModule" type="命名空間.類名"></add>
         </httpModules> io

  httphandler介紹編譯

  httphandler主要做用是HTTP請求的處理中心,真正地對客戶端請求的服務器頁面作出編譯和執行,並將處理事後的信息附加在HTTP請求信息流中再次返回到HttpModule中

  1.全部httphandler都是實現了IHttpHandler接口聲明

  2.HttpHandler與HttpModule不一樣,一旦定義了本身的HttpHandler類,那麼它對系統的HttpHandler的關係將是「覆蓋」關係

  3.必須在Web.Config配置文件中註冊,註冊代碼以下

  <httpHandlers>
       <add verb="*" path="*" type="命名空間.類名"></add>
      </httpHandlers> 

  4.在ProcessRequest方法中實現本身的業務邏輯

相關文章
相關標籤/搜索