新聞中心
ASP.NET請求的處理過程

創(chuàng)新互聯(lián)公司專注于雷山網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供雷山營銷型網(wǎng)站建設(shè),雷山網(wǎng)站制作、雷山網(wǎng)頁設(shè)計(jì)、雷山網(wǎng)站官網(wǎng)定制、微信小程序定制開發(fā)服務(wù),打造雷山網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供雷山網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
ASP.NET請求處理過程是基于管道模型的,在模型中ASP.NET把http請求傳遞給管道中的所有模塊。每個模塊都接收http請求并有完全控制權(quán)限。模塊可以用任何自認(rèn)為適合的方式來處理請求。一旦請求經(jīng)過了所有HTTP模塊,就最終被HTTP處理程序處理。HTTP處理程序?qū)φ埱筮M(jìn)行一些處理,并且結(jié)果將再次經(jīng)過管道中的HTTP模塊:
請注意在http請求的處理過程中,只能調(diào)用一個HTTP處理程序,然而可以調(diào)用多個HTTP模塊。
Http處理程序
HTTP處理程序是實(shí)現(xiàn)了System.Web.IHttpHandler接口的.NET組件。任何實(shí)現(xiàn)了IHttpHandler接口的類都可以用于處理輸入的HTTP請求。HTTP處理程序與ISAPI擴(kuò)展有些類似。HTTP處理程序和ISAPI擴(kuò)展的差別在于在URL中可以使用HTTP處理程序的文件名稱直接調(diào)用它們,與ISAPI擴(kuò)展類似。
HTTP處理程序?qū)崿F(xiàn)了下列方法:
| 方法名稱 | 描述 |
| ProcessRequest | 這個方法實(shí)際上是http處理程序的核心。我們調(diào)用這個方法來處理http請求。 |
| IsReusable | 我們調(diào)用這個屬性來決定http處理程序的實(shí)例是否可以用于處理相同其它類型的請求。HTTP處理程序可以返回true或false來表明它們是否可以重復(fù)使用。 |
你可以使用web.config或者machine.config文件把這些類映射到http請求上。映射完成以后,當(dāng)接收到相應(yīng)請求的時候ASP.NET會實(shí)例化http處理程序。我們將解釋如何在web.config和/或machine.config文件中定義所有這些細(xì)節(jié)信息。
ASP.NET還通過IHttpHandlerFactory接口支持http處理程序的擴(kuò)展。ASP.NET提供了把http請求路由到實(shí)現(xiàn)IHttpHandlerFactory接口的類的對象上的能力。此外,ASP.NET還利用了Factory設(shè)計(jì)模式。這種模式為建立一組相關(guān)對象而不提供具體類的功能提供了接口。簡單的說,你可以把用于建立依賴傳遞進(jìn)來的參數(shù)建立的http處理程序?qū)ο蟮念惪醋魇莊actory(工廠)。我們不用指定需要實(shí)例化的特定的http處理程序;http處理程序工廠處理這種事務(wù)。這樣做的優(yōu)點(diǎn)在于如果未來實(shí)現(xiàn)IHttpHandler接口的對象的實(shí)現(xiàn)方法發(fā)生了改變,只要接口仍然相同,客戶端就不會受到影響。
下面是IHttpHandlerFactory接口中的方法列表:
| 方法名稱 | 描述 |
| GetHandler | 這個方法負(fù)責(zé)建立適當(dāng)?shù)奶幚沓绦虿阉闹羔樂祷氐秸{(diào)用代碼(ASP.NET運(yùn)行時)。這個方法返回的處理程序?qū)ο髴?yīng)該實(shí)現(xiàn)了IHttpHandler接口。 |
| ReleaseHandler | 這個方法負(fù)責(zé)在請求處理完成后釋放http處理程序。Factory 實(shí)現(xiàn)決定了它的操作。Factory 實(shí)現(xiàn)可以是實(shí)際摧毀實(shí)例,也可以把它放入緩沖池供以后使用。 |
在配置文件中注冊HTTP處理程序和HTTP處理程序工廠
ASP.NET在下面的配置文件中維護(hù)自己的配置信息:
· machine.config
· web.config
machine.config文件包含應(yīng)用于計(jì)算機(jī)上安裝的所有Web應(yīng)用程序的配置設(shè)置信息。
web.config文件對于每個Web應(yīng)用程序來說是特定的。每個Web應(yīng)用程序都有自己的web.config文件。Web應(yīng)用程序的任何子目錄也可能包含自己的web.config文件;這使得它們能夠覆蓋父目錄的設(shè)置信息。
為了給我們的Web應(yīng)用程序添加HTTP處理程序,你可以使用<httpHandlers>和<add>節(jié)點(diǎn)。實(shí)際上,處理程序都帶有<add>節(jié)點(diǎn),列舉在<httpHandlers>和</httpHandlers>節(jié)點(diǎn)之間。下面是添加HTTP處理程序的一個普通的例子:
- <httpHandlers>
- <add verb="supported http verbs" path="path" type="namespace.classname, assemblyname" />
- <httpHandlers>
在上面的XML中,
· Verb屬性指定了處理程序支持的HTTP動作。如果某個處理程序支持所有的HTTP動作,請使用“*”,否則使用逗號分隔的列表列出支持的動作。因此如果你的處理程序只支持HTTP GET和POST,那么verb屬性就應(yīng)該是“GET, POST”。
· Path屬性指定了需要調(diào)用處理程序的路徑和文件名(可以包含通配符)。例如,如果你希望自己的處理程序只有在test.xyz文件被請求的時候才被調(diào)用,那么path屬性就包含“test.xyz”,如果你希望含有.xyz后綴的所有文件都調(diào)用處理程序,path屬性應(yīng)該包含“*.xyz”。
· Type屬性用名字空間、類名稱和部件名稱的組合形式指定處理程序或處理程序工廠的實(shí)際類型。ASP.NET運(yùn)行時首先搜索應(yīng)用程序的bin目錄中的部件DLL,接著在全局部件緩沖(GAC)中搜索。
文章名稱:ASP.NET的HTTP模塊和處理程序之請求的處理過程
標(biāo)題網(wǎng)址:http://fisionsoft.com.cn/article/cocdejo.html


咨詢
建站咨詢
