溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

ASP.NET處理程序的執(zhí)行方法是什么

發(fā)布時(shí)間:2021-12-06 15:32:34 來源:億速云 閱讀:140 作者:iii 欄目:編程語言

這篇文章主要介紹“ASP.NET處理程序的執(zhí)行方法是什么”,在日常操作中,相信很多人在ASP.NET處理程序的執(zhí)行方法是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”ASP.NET處理程序的執(zhí)行方法是什么”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

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

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

下面是machine.config文件中的一個(gè)片段:

<httpHandlers>  <add verb="*" path="trace.axd" type="System.Web.Handlers.TraceHandler"/>  <add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory"/>  <add verb="*" path="*.ashx" type="System.Web.UI.SimpleHandlerFactory"/>  <add verb="*" path="*.config" type="System.Web.HttpForbiddenHandler"/>  <add verb="GET,HEAD" path="*" type="System.Web.StaticFileHandler"/>   . . . . . .    . . . . . .  </httpHandlers>

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

執(zhí)行HTTP處理程序

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

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

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

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

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

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

***步

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

下面是NewHandler類的代碼:

using System;  using System.Web;   namespace MyHandler  {   public class NewHandler : IHttpHandler   {  public NewHandler()  {   // TODO: 此處添加構(gòu)造邏輯  }   #region Implementation of IHttpHandler  public void ProcessRequest(System.Web.HttpContext context)  {   HttpResponse objResponse = context.Response ;   objResponse.Write("<html><body><h2>Hello 15Seconds Reader ") ;   objResponse.Write("</body></html>") ;  }   public bool IsReusable  {   get   {  return true;   }  }  #endregion   }  }

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

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

第二步

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

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

第三步

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

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

ASP.NET處理程序的執(zhí)行方法是什么

點(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,看到的頁面如下: 

ASP.NET處理程序的執(zhí)行方法是什么

到此,關(guān)于“ASP.NET處理程序的執(zhí)行方法是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI