自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

ASP.NET的HTTP模塊和處理程序之處理程序的執(zhí)行

開發(fā) 后端
為了實(shí)現(xiàn)擴(kuò)充或擴(kuò)展Web服務(wù)器的功能,ASP.NET提供了HttpHandler(HTTP處理程序)和HttpModule(HTTP模塊),這里,筆者將帶各位深入了解這些組件的詳細(xì)信息。在之前,我們已經(jīng)介紹了一部分,這篇文章,筆者將向大家介紹ASP.NET的HTTP處理程序的執(zhí)行及使用方法。

  ASP.NET運(yùn)行時對HTTP處理程序的使用方式

  無論你是否相信,ASP.NET都使用HTTP請求實(shí)現(xiàn)了大量的自己的功能。ASP.NET使用處理程序來處理.aspx、.asmx、.soap和其它ASP.NET文件。

  下面是machine.config文件中的一個片段:

  1. <httpHandlers>  
  2. <add verb="*" path="trace.axd" type="System.Web.Handlers.TraceHandler"/>  
  3. <add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory"/>  
  4. <add verb="*" path="*.ashx" type="System.Web.UI.SimpleHandlerFactory"/>  
  5. <add verb="*" path="*.config" type="System.Web.HttpForbiddenHandler"/>  
  6. <add verb="GET,HEAD" path="*" type="System.Web.StaticFileHandler"/>  
  7.  . . . . . .   
  8.  . . . . . .  
  9. </httpHandlers> 

  在上面的配置信息中你可以看到對.aspx文件的所有請求都由System.Web.UI.PageHandlerFactory類來處理。與此類似,對.config文件和其它文件(它們不能被客戶端直接訪問)的所有請求都由System.Web.HttpForbiddenHandler類處理。你可能已經(jīng)猜到,當(dāng)訪問這些文件的時候,該類簡單地給客戶端返回一個錯誤信息。

  執(zhí)行HTTP處理程序

  現(xiàn)在你將看到如何實(shí)現(xiàn)一個HTTP處理程序。那么我們的新處理程序要做什么任務(wù)呢?前面我提到,處理程序大多數(shù)用于給Web服務(wù)器添加新功能;因此,我將建立一個處理程序來處理新的文件類型——擴(kuò)展名為.15seconds的文件。我們建立了這個處理程序并在我們的Web應(yīng)用程序的web.config文件中注冊之后,所有對.15seconds文件的請求都將由這個新處理程序來處理。

  你可能正在考慮這個處理程序的使用方法。如果你希望引入一種新的服務(wù)器腳本語言或動態(tài)服務(wù)器文件(例如asp、aspx)該怎么辦呢?你可以為它編寫一個自己的處理程序。類似地,如果你希望在IIS上運(yùn)行Java小程序、JSP和其它一些服務(wù)器端Java組件應(yīng)該怎么辦呢?一種方法是安裝某些ISAPI擴(kuò)展(例如Allaire或Macromedia Jrun)。你也可以編寫自己的HTTP處理程序。盡管這對于第三方廠商(例如Allaire和Macromedia)來說是很復(fù)雜的事務(wù),但是它卻是個很有吸引力的選擇,因?yàn)樗鼈兊腍TTP處理能夠能夠訪問ASP.NET運(yùn)行時暴露的所有新功能。

  實(shí)現(xiàn)我們的HTTP處理程序包含以下步驟:

  1.編寫一個實(shí)現(xiàn)IHttpHandler接口的類。

  2. 在web.config或machine.config文件中注冊這個處理程序。

  3.在Internet服務(wù)管理器中把文件擴(kuò)展(.15seconds)映射到ASP.NET ISAPI擴(kuò)展DLL(aspnet_isapi.dll)上。

  ***步

  在Visual Studio.NET中建立一個新的C#類庫項(xiàng)目,并把它命名為“MyHandler”。Visual Studio.NET將自動地給項(xiàng)目添加一個叫做“Class1.cs”的類。把它改名為“NewHandler”;在代碼窗口中打開這個類,并把類的名稱和構(gòu)造函數(shù)的名稱改成“NewHandler”。

  下面是NewHandler類的代碼:

  1. using System;  
  2. using System.Web;  
  3.  
  4. namespace MyHandler  
  5. {  
  6.  public class NewHandler : IHttpHandler  
  7.  {  
  8.   public NewHandler()  
  9.   {  
  10.    // TODO: 此處添加構(gòu)造邏輯  
  11.   }  
  12.  
  13.   #region Implementation of IHttpHandler  
  14.   public void ProcessRequest(System.Web.HttpContext context)  
  15.   {  
  16.    HttpResponse objResponse = context.Response ;  
  17.    objResponse.Write("<html><body><h1>Hello 15Seconds Reader ") ;  
  18.    objResponse.Write("</body></html>") ;  
  19.   }  
  20.  
  21.   public bool IsReusable  
  22.   {  
  23.    get  
  24.    {  
  25.     return true;  
  26.    }  
  27.   }  
  28.   #endregion  
  29.  }  

  你在ProcessRequest方法中可以看到,該HTTP處理程序通過System.Web.HttpContext對象訪問了所有作為參數(shù)傳遞給它的ASP.NET內(nèi)部對象。實(shí)現(xiàn)ProcessRequest方法只需要簡單地從context對象中提取HttpResponse對象并把發(fā)送一些HTML給客戶端。類似地,IsReusable返回true,表明這個處理程序可以被重復(fù)用作處理其它的HTTP請求。

  我們編譯上面的代碼并把它放到webapp虛擬目錄的bin目錄之中。

  第二步

  在web.config文件中通過添加下面的文本來注冊這個處理程序:

  1. <httpHandlers>  
  2. <add verb="*" path="*.15seconds" type="MyHandler.NewHandler,MyHandler"/>  
  3. </httpHandlers> 

  第三步

  由于我們已經(jīng)建立了用于處理新擴(kuò)展文件的處理程序了,我們還需要把這個擴(kuò)展名告訴IIS并把它映射到ASP.NET。如果你不執(zhí)行這個步驟而試圖訪問Hello.15seconds文件,IIS將簡單地返回該文件而不是把它傳遞給ASP.NET運(yùn)行時。其結(jié)果是該HTTP處理程序不會被調(diào)用。

  運(yùn)行Internet服務(wù)管理器,右鍵點(diǎn)擊默認(rèn)Web站點(diǎn),選擇屬性,移動到Home目錄選項(xiàng)頁,并點(diǎn)擊配置按鈕。應(yīng)用程序配置對話框彈出來了。點(diǎn)擊添加按鈕并在可執(zhí)行字段輸入aspnet_isapi.dll文件路徑,在擴(kuò)展字段輸入.15seconds。其它字段不用處理;該對話框如下所示:

 

 

  點(diǎn)擊確認(rèn)按鈕關(guān)閉應(yīng)用程序配置和默認(rèn)Web站點(diǎn)屬性對話框。

  現(xiàn)在我們運(yùn)行Internet Explorer并輸入url:http://localhost/webapp/hello.15seconds,看到的頁面如下: 

 

【編輯推薦】

  1. ASP.NET的HTTP模塊和處理程序
  2. ASP.NET的HTTP模塊和處理程序之請求的處理過程
  3. ASP.NET的HTTP模塊和處理程序之對話狀態(tài)
  4. ASP.NET的HTTP模塊和處理程序之HTTP模塊的注冊和使用
  5. ASP.NET的HTTP模塊和處理程序之模塊實(shí)現(xiàn)
責(zé)任編輯:韓亞珊 來源: 天極網(wǎng)
相關(guān)推薦

2011-04-13 15:18:10

.htmHTTP請求處理

2011-04-13 16:59:41

HTTPASP.NET

2011-04-13 16:49:26

HTTPASP.NET

2011-04-13 16:35:47

HTTPASP.NET

2011-04-13 15:50:49

.htmHTTP請求處理

2009-07-27 13:25:15

Postback程序處ASP.NET

2009-08-04 11:46:09

2009-07-20 16:04:37

ASP.NET fra

2009-07-28 18:00:11

ASP.NET程序

2009-07-29 15:51:29

ASP.NET中執(zhí)行w

2010-05-06 13:33:47

Asp.Net負(fù)載均衡

2009-07-29 17:20:18

應(yīng)用程序異常

2009-08-06 11:05:48

ASP.NET服務(wù)器控

2009-07-29 17:21:10

2009-06-19 16:20:14

ASP.NET錯誤處理

2009-07-20 16:14:39

ASP.NET運(yùn)行時

2009-07-23 16:28:55

2009-02-06 14:11:36

ASP.NET.NET全局異常處理

2009-08-05 16:04:50

2009-08-14 17:57:43

ASP.NET MVC
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號