婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > asp.net 請求輸入到輸出的全過程及httpHandler和httpModuler詳細介紹

asp.net 請求輸入到輸出的全過程及httpHandler和httpModuler詳細介紹

熱門標簽:預測式外呼系統使用說明 申請400電話手續 合肥電銷外呼系統哪家公司做的好 電話機器人軟件銷售工作 蘋果手機凱立德地圖標注 南陽外呼系統定制化 玉林市機器人外呼系統哪家好 百度ai地圖標注 同安公安400電話怎么申請流程

最近看了幾篇講述httpHandler和HttpModuler的文章,總的來說還是Fish li的那篇文章給力,但是他是大牛,他寫出來的文章技術含量太高,對于像我這樣的小兵,

要完全看懂估計需要看幾遍。雖然說沒有完全了解底層操作,但是我也算明白了一個請求從進入IIS到最后輸出都經歷了哪些過程。說實話,原來我以為.Net的類的子

類都是設計者自己設計的,沒有考慮到真正的程序員是否可以完全掌握。了解了底層操作,我發現我的那個觀點是多么的無知,每個.Net的類都是對應現實中的一種對

象,比如說Mvc3 中的路由就包括RouteData和HttpContext,至于為什么要這樣包含?只有了解了iis的觸發過程,我們就會真正的了解了。

序言介紹完畢,現在就來分享一下我對IIS底層的理解。技術不過硬,只能是采用大白話來說。

上面這幅圖說明了在IIS 6 下的處理過程。

因為我們現在所用的是MVC3  ,所以我就按照MVc3 中的生命周期來敘述一個請求從開始到消亡的全過程。

請求階段

  用戶通過瀏覽器輸入localhost/home/index 的地址,瀏覽器會發送一個請求到服務器的IIS用來處理這個請求。其實在操作系統中存在一個系統文件叫做http.sys

文件,它用來監視是否有請求到來,也就是說一個用戶發來的請求的第一個接待者就是http.sys,它是一個系統文件,運行在操作系統的內核模式下,因此運行速度

更快。

在http.sys文件接收到請求之后(注:這是我的一個理解誤區,我以前一直以為請求會直接進入IIS),會傳入到第二個接待者IIS,真正的用來處理請求的操作系統組

件。在IIS接收到用戶請求以后,首先會通過映射文件  然后由aspnet_iisapi.dll (IIS擴展)根據文件擴展名來選擇對應的應用程序。這樣說有點拗口,直白點的意思

就是IIS擴展會根據傳入文件的擴展名(.aspx等)來選擇 在IIS中配置的處理程序。這里會有一個問題存在,在Mvc中沒有擴展名,那么程序是如何匹配的呢?其實這個

問題的處理方法有兩種

  1.就是通過在路由表中添加一個虛擬的擴展名來欺騙IIS

  2.就是通過在IIS配置文件中不選擇確認文件存在,讓IIS根據沒有文件擴展名的文件路徑來進行處理

現在這個請求到了哪里?到了IIS擴展這里,下一步就是要進入到.Net框架中,讓.Net框架來處理請求。但是在這中間會經過一些步驟的處理。大家應該記得在Web

form中有很多的事件,Page_load、Page_Render等,這些事件的執行順序是依次進行的,不會混亂?那么.Net框架是如何來保證這些事件的順序執行呢?這就是今

天的第一個主角HttpModule。我們可以把它稱為http請求的過濾器,因為它不會有任何的輸出,它會在任何請求中都會執行。當然有一個例外,那就是靜態文件或者

其他沒有配置為讓IIS擴展讓.Net框架處理的請求文件,因為他們進入到IIS中,IIS會找到對應的文件然后輸出給瀏覽器的。

HttpModule的具體使用大牛們都說的很清楚了,我就簡潔的描述一下大牛們忽略的知識點。既然說HttpModule是一個過濾器,那么我們可以在任何一個HttpModule

中終止當前請求的執行,執行身份認證,請問文件的訪問權限檢查等操作。我們可以自定義HttpModule擴展,只是讓我們自己定義的類實現IHttpModule接口即可,

在IHttpModule  接口中有一個Init(HttpApplication app)方法,這是我們自定義擴展Module的入口,我們可以在其中定義我們自己進行的處理操作。

Init這個方法會接受一個HttpApplication類型的參數,HttpApplication 在MSDN中的定義就是定義 ASP.NET 應用程序中的所有應用程序對象通用的方法、屬性和事

件。此類是用戶在 global.asax 文件中所定義的應用程序的基類。HttpApplication 類的實例是在 ASP.NET 基礎結構中創建的,而不是由用戶直接創建的。

HttpApplication 類的一個實例在其生存期內被用于處理多個請求,但它一次只能處理一個請求。這樣,成員變量才可用于存儲針對每個請求的數據。

看到這個類的定義我們有沒有想到應用程序池的概念,在IIS中我們新建一個應用程序就會創建一個對應的應用程序池,其實在應用程序池中存儲的是什么?應該就是

這些HttpApplication對象。每個請求會有一個對應的HttpApplication對象來全程的負責它的執行,在httpApplication對象中包含著請求所需要的所有參數值。例如

Response、Request、Cache等.Net常用的對象,甚至我們可以通過這個變量獲取到web.config中定義的所有Module擴展。HttpApplication會伴隨著請求的全部

執行過程。

現在一個問題又來了,這個Module擴展需要傳遞一個HttpApplication對象作為參數,那么這個方法的參數是由誰創建的呢?我們應該經常用到一個類

HttpRuntime,根據這個字面意思,我們也可以想到這個就是表示的Http運行時,是的,在IIS將請求的數據準備好以后會通過HttpRuntime 調用

HttpApplicationFactory的一個Create()方法來得到一個HttpApplication對象,然后把參數值傳遞給這個對象,最后這個對象會傳遞到Module擴展中。

現在請求經過了Module擴展過濾之后,就要進入到真正處理它的地方了,HttpHandler,提起它,如果我們有點陌生,那么我們一定使用過.Net中的一般處理程序,

我們可以看到一般處理程序是一個ashx文件,其中會繼承自IHttpHandler接口,進行ProcessRequest處理。其實我們的HttpHandler就是ashx文件的codeBehind

文件。只要我們實現了IHttpHandler接口中的方法,就定義了一個Handler擴展。

HttpHandler 是作為處理者的角色出現的,不是過濾者,所以Handler會有輸出結果。如果你要在Handler中使用Session,那么就要繼承IRequiredSessionState

接口,或者加上一個IReadOnlySessionState接口,這樣我們操作Session的時候才不會出現錯誤。在Handler中我們可以進行任何我們想要的操作,例如生成圖片

水印、防盜鏈甚至是文件的輸出壓縮以及編碼等都可以實現。

像我們的Web Service以及一般處理程序,從本質上說都是Handler的一種高層實現方式,都是進行了Handler的擴展操作。

因為我們討論的是MVC,所以我們不得不考慮路由Route,其實Route是Mvc中的一個單獨的組件,它在我們的整個請求中也占據了非常重要的地位。在IIS通過IIS擴

展選擇了適當的處理程序來處理這個請求的時候,就是路由出現的時候,路由會根據路由配置分析這個路徑的ControllerName以及ActionName,對應的參數值,然

后會把這些參數存儲到RouteData中,RouteTable.Routes 是一個路由集合,RouteData和HttpContext上下文就會組成另一個類的對象,RequestContext,我

們在MVC編程的時候,經常會用到這個對象中的一些數據。.Net框架會根據RequestContext對象的值來匹配程序中的Controller以及Action,然后調用

ControllerDescriptor 執行Controller,生成Controller的對象,然后通過ActionInvoke方法來執行具體的Action。

在Action執行完畢,返回對應的視圖的時候,整個請求在.Net框架中的處理就算結束了。在輸出結果返回到用戶瀏覽器之前,輸出結果還會經過Module擴展的最后處

理,輸出結果到達IIS,最后IIS通過Http.sys響應到用戶瀏覽器上,用戶就可以看到輸出結果。

因為一個請求從進入到顯示在瀏覽器上會兩次經過Module擴展,這就是為什么我們在web form中可以定義一個開始事件,然后還會有一個完成事件的原因。

總結一下,一個用戶發起的請求通過http.sys-->IIS-->aspnet_iisapi.dll-->對應的處理程序-->Module--->Handler-->Module--->IIS-->http.sys-->用戶瀏覽器。

當然這個請求的順序不是特別的準確,因為省略了好多的細節,但是從大的方面說就是這些功能。可能你會有一個疑問,aspx文件沒有是什么時候執行的呢?其實這

個問題我以前也有想過,aspx是在Module之后處理的,但是在handler之后還是之前呢?今天終于得到了答案,其實一個單獨的aspx文件就是一個handler,每個

aspx文件在編譯的時候都會編譯成一個類,這個類繼承自Page,但是Page繼承自哪里呢?

復制代碼 代碼如下:

public class Page : TemplateControl, IHttpHandler

我們可以看到Page繼承自IHttpHandler接口,這就驗證了Page類的執行是在Handler執行的時候觸發的。

一個小小的http請求會讓我們有那么多的知識要掌握,我們作為程序員對于這個請求的模型應該是很熟悉。但是作為.Net 拖控件開發的程序員,我善意的提醒一下,

如果可以不用控件,我們就別用了,用js、css來代替吧,畢竟html是基礎。在Mvc時代到來的時候,,擁抱新技術吧。

我是小兵,沒有太多的發言權,所以我就是按小兵的思路來分析大牛們的技術。

 

您可能感興趣的文章:
  • Asp.net實現MVC處理文件的上傳下載功能實例教程
  • ASP.NET mvc異常處理的方法示例介紹
  • ASP.NET 回發密碼框清空問題處理方法
  • asp.net錯誤頁面處理示例分享
  • ASP.NET MVC處理文件上傳的小例子
  • ASP.NET中在一般處理程序中使用session的簡單介紹
  • asp.net上傳圖片并作處理水印與縮略圖的實例代碼
  • asp.net4.0框架下驗證機制失效的原因及處理辦法
  • Asp.net請求處理之管道處理介紹
  • asp.net通過HttpModule自動在Url地址上添加參數
  • 攔截asp.net輸出流并進行處理的方法

標簽:南京 南昌 揚州 淄博 南京 嘉興 臺州 海南

巨人網絡通訊聲明:本文標題《asp.net 請求輸入到輸出的全過程及httpHandler和httpModuler詳細介紹》,本文關鍵詞  asp.net,請求,輸入,到,輸出,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《asp.net 請求輸入到輸出的全過程及httpHandler和httpModuler詳細介紹》相關的同類信息!
  • 本頁收集關于asp.net 請求輸入到輸出的全過程及httpHandler和httpModuler詳細介紹的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    久久99久久精品| 国产免费久久精品| 日韩高清一区二区| 久久精子c满五个校花| 欧美制服丝袜第一页| 国产精品小仙女| 乱中年女人伦av一区二区| 一区二区不卡在线播放| 国产人成一区二区三区影院| 欧美tickling挠脚心丨vk| 不卡av在线网| 国产乱国产乱300精品| 日本不卡123| 图片区小说区国产精品视频| 亚洲蜜臀av乱码久久精品蜜桃| 中文字幕欧美激情| 国产日韩欧美亚洲| 久久影音资源网| 日韩欧美一级在线播放| 欧美久久一二区| 555夜色666亚洲国产免| 欧美精品亚洲二区| 欧美精品乱码久久久久久按摩| 91久久久免费一区二区| 欧洲日韩一区二区三区| 欧美性受极品xxxx喷水| 欧美美女网站色| 91精品国产综合久久久久久漫画| 欧美日韩国产一级片| 51精品国自产在线| 日韩限制级电影在线观看| 91精品国产一区二区三区香蕉| 91成人网在线| 欧美一区日本一区韩国一区| 日韩一级大片在线| 精品国产乱码久久久久久久久| 精品国产91洋老外米糕| 久久午夜免费电影| 国产精品日韩精品欧美在线| 国产欧美va欧美不卡在线| 成人欧美一区二区三区小说| 亚洲桃色在线一区| 亚洲国产精品一区二区久久 | 欧美精品精品一区| 日韩精品一区二区三区视频播放| 久久综合给合久久狠狠狠97色69| wwww国产精品欧美| 2023国产一二三区日本精品2022| 久久婷婷综合激情| 亚洲男人的天堂在线观看| 日韩av在线免费观看不卡| 国产精品资源在线| 欧美性三三影院| 欧美国产精品劲爆| 亚洲一区二区偷拍精品| 免费的成人av| www.亚洲精品| 欧美日本精品一区二区三区| 久久免费看少妇高潮| 亚洲男人天堂一区| 国产一区二区三区在线看麻豆| 成人国产亚洲欧美成人综合网| 欧美色爱综合网| 毛片基地黄久久久久久天堂| 成人18精品视频| 欧美精品在线一区二区三区| 国产精品美女久久久久久2018| 亚洲v中文字幕| 成人小视频免费在线观看| 在线电影一区二区三区| 亚洲欧洲日韩在线| 国产美女一区二区三区| 欧美美女黄视频| 亚洲激情中文1区| 国产一区二区不卡在线| 在线电影一区二区三区| 亚洲另类春色校园小说| 成人免费看黄yyy456| 777午夜精品免费视频| 中文字幕一区二区三区视频 | 一卡二卡三卡日韩欧美| 成人小视频免费在线观看| 日韩欧美一区二区久久婷婷| 亚洲国产精品尤物yw在线观看| 97久久久精品综合88久久| 国产亚洲综合性久久久影院| 蜜臀av亚洲一区中文字幕| 欧美午夜精品久久久久久超碰| 1区2区3区精品视频| 粉嫩av一区二区三区粉嫩| 精品国产区一区| 激情成人午夜视频| 日韩午夜小视频| 日本在线不卡一区| 欧美欧美欧美欧美| 婷婷久久综合九色综合绿巨人 | 久久影院午夜片一区| 亚洲电影在线播放| 色噜噜狠狠成人中文综合| 亚洲欧美日韩中文字幕一区二区三区 | 欧美亚洲禁片免费| 1000精品久久久久久久久| 风间由美性色一区二区三区| 欧美激情一二三区| av电影在线观看不卡| 亚洲欧美偷拍另类a∨色屁股| 在线观看日韩一区| 亚洲福利视频三区| 日韩三级视频在线观看| 久久国产精品色| 国产日韩欧美一区二区三区乱码 | 亚洲成人一区在线| 欧美电影在线免费观看| 免费成人av在线| 久久精品视频在线看| av高清不卡在线| 偷拍一区二区三区| 国产午夜精品久久久久久久| 99久久久国产精品| 偷窥国产亚洲免费视频 | 亚洲午夜精品网| 日韩一级免费一区| 成人av集中营| 午夜精品成人在线| 欧美韩国日本一区| 欧美丝袜丝交足nylons| 久久精品国产第一区二区三区| 亚洲国产高清在线观看视频| 在线亚洲欧美专区二区| 日本欧美一区二区| 国产精品天天摸av网| 欧美日韩国产小视频在线观看| 国产精品一区二区视频| 夜夜精品视频一区二区| 精品国产3级a| 欧美丝袜丝交足nylons图片| 粉嫩av一区二区三区在线播放| 天天综合网 天天综合色| 欧美国产激情二区三区| 91麻豆精品国产无毒不卡在线观看| 国产寡妇亲子伦一区二区| 亚洲成人在线观看视频| 国产精品美女久久久久久2018| 欧美一区午夜视频在线观看| 91免费国产在线观看| 亚洲第一在线综合网站| 欧美高清在线精品一区| 宅男噜噜噜66一区二区66| 91女神在线视频| 国产一区91精品张津瑜| 石原莉奈在线亚洲三区| 中文字幕亚洲在| 日本一区二区视频在线| 精品日韩一区二区| 欧美日韩高清不卡| 色综合久久88色综合天天6| 粉嫩在线一区二区三区视频| 精品在线播放免费| 美女爽到高潮91| 日本va欧美va精品| 婷婷久久综合九色综合绿巨人 | 麻豆成人综合网| 亚洲主播在线播放| 中文字幕一区二区在线观看| 国产亚洲精品中文字幕| 日韩欧美中文字幕一区| 欧美久久久久中文字幕| 欧美在线免费观看亚洲| 一本到不卡免费一区二区| www.在线欧美| 97国产一区二区| 91丝袜国产在线播放| www.在线欧美| 色综合天天性综合| 91麻豆swag| 色综合久久天天综合网| 99re成人在线| 色天天综合久久久久综合片| 91在线观看成人| 99国内精品久久| 99久久免费视频.com| 成人免费高清视频| 99精品国产热久久91蜜凸| 色香色香欲天天天影视综合网| 99精品欧美一区二区蜜桃免费| 91美女蜜桃在线| 欧美日韩一区二区三区视频| 欧美日韩成人激情| 欧美一区二区三区在线看| 欧美一区二区精品久久911| 欧美一区永久视频免费观看| 欧美大片顶级少妇| 国产校园另类小说区| 中文字幕免费不卡| 自拍偷自拍亚洲精品播放| 亚洲乱码国产乱码精品精98午夜| 午夜视频一区二区| 精品中文av资源站在线观看| 从欧美一区二区三区| av中文一区二区三区|