亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

IIS處理Asp.net請求和Asp.net頁面生命周期說明

2024-07-10 13:25:03
字體:
來源:轉載
供稿:網友
首先我們要弄清楚兩個非常重要的概念:
1, worker process(w3wp.exe). worker process管理所有的來自客戶端的請求并給出響應。它是IIS下asp.net應用程序的核心。
2, application pool. 它是worker process的容器,IIS5及之前的IIS版本均沒有application pool的概念。每一個application pool對應著一個worker process,在IIS Metabase中維護著Application Pool和worker process的Mapping。這就避免了IIS5中出現的worker process(IIS5中是aspnet_wp.exe,同一時間只能運行一個該進程)崩潰,application全崩潰的局面。
客戶端向IIS發出一個資源請求后發生了如下事情:
1, server接受該請求
IIS6通過內核模式(Kernel mode)中的HTTP.SYS來分發各個Request到application pool。 這并不是隨機的過程,在application pool創建的時候就已經注冊到了HTTP.SYS,所以當請求來到時HTTP.SYS會直接發送到相應的application pool。 接下來在IIS的用戶模式(User mode)中,Web Admin Services (WAS) 做了從HTTP.SYS中得到Request并分發到application pool的工作。application pool直接把request傳遞給worker process。
2, 請求傳遞到worker process后,worker process初始化加載ASP.NET ISAPI(Internet Server Application Program Interface),ASP.NET ISAPI進而加載CLR創建托管環境。
(注:ISAPI只是一個接口,起到一個代理的作用,主要能力就是根據Request URL的后綴來尋找該后綴的處理程序)
ASP.NET ISAPI定義在aspnet_isapi.dll中,它本身運行在一個非托管的環境中。ASP.NET ISAPI開始一個HttpRuntime, HttpRuntime調用ProcessRequest方法來開始處理請求。ProcessRequest根據ISAPI傳進來的iWRType 來創建不同的HttpWorkerRequest,從而屏蔽了不同IIS的差異。接下來ProcessRequest方法創建了HttpContext,我們使用HTTPContext.Current來訪問它。在HttpRuntime使用HttpApplicationFactory創建了HttpApplication對象(IHttpHandler)以后,所有的請求都會在通過httpmodule后找到相應的Httphandler進行處理。在HttpApplicationFactory創建HttpApplication之前,會查找config(web.config和Machine.config)文件中注冊的所有的HttpModule,并根據配置信息加載相應的Assembly,通過Reflection創建對應的HttpModule,并將這些Module加到HttpApplication 的_moduleCollection Filed中。我們對一個Application的請求最終會落到一個HttpApplication對象上。當一個請求到來時,ASP.NET會在Httplication Pool中查找未被使用的HttpApplication對象。
3, 請求通過HTTP管道后,每個請求都發向相關的各自的httphandler,IIS請求處理過程結束。
HttpHandler是HTTP管道的終點,它為每個request生成輸出。System.Web.UI.Page就是這樣一個典型的Httphandler,當我們請求一個aspx頁面,這個HttpHandler就生成html發送回客戶端??碢age類的簽名:
public class Page : TemplateControl, IHttpHandler
{
}
可以看到,Page類就是一個HttpHandler。
綜上整個過程就是:當客戶端向服務器發送資源請求時,請求首先到達IIS的HTTP.SYS。然后HTTP.SYS發送請求道對應的Application Pool。 然后Application Pool發送請求到Worker Process(W3WP.exe)中加載ISAPI Extension,ISAPI創建一個HttpRuntime對象來通過HttpModule和HttpHandler處理請求。 然后頁面生命周期就開始了。
4, 頁面生命周期開始
頁面生命周期的主要階段包括:
頁面初始化(Init): 服務器創建服務器控件的實例
加載(load): 控件實例被加載到它定義的頁面對象中
預輸出:(PreRender) 對控件的更改被更新,準備輸出。
保存(SaveViewState): 控件的狀態信息被保存。
輸出頁面(Render):服務器為控件創建html標記。
處理(Dispose): 主要做的工作就是dispose, 關閉數據庫連接,文件資源的釋放等。
卸載(Unload):銷毀服務器控件的實例
頁面生命周期的主要事件:
PreInit:
1.檢查IsPostBack 屬性
2.動態設置Master Page
3.動態設置Theme
4.設置控件的默認值(UniqueId等)
5.重新創建動態控件(初始化控件),初始化控件的值
Init: 這個事件發生在所有的控件被初始化,所有的皮膚設置被應用以后。它用來讀取或者初始化控件屬性。它能夠用來注冊一些aspx頁面中沒有指出的控件的事件。
InitComplete: Use this event for processing tasks that require all initialization to be complete.
PreLoad: 加載頁面的ViewState和所有的控件,然后處理所有的包含在Request實例中的postback數據。
Load: 這個事件可能是大家最熟悉的了。需要注意的是,Page對象會遞歸的調用子控件的onload事件直到頁面和所有的子控件被加載完成。這個事件主要用來設置控件屬性的值,建立數據庫連接(通常不這么做)。
Control events: 這個就不多說了,主要是處理控件的事件,例如click。這也就讓我們明白了每次我們click一個Button的時候,實際上是要先去執行load事件然后才執行click事件的,一般我們用!IsPostBack來判斷一下從而避免執行不必要的加載邏輯。
LoadComplete: 頁面所有的控件都被加載以后執行,暫時沒有想到用來干什么。。。
PreRender: 在HTML被生成之前這是最后一個事件。每一個頁面中的控件都有PreRender的過程。在這里對將要輸出的HTML結果進行最后一次修改。
SaveStateComplete: 在這個時間發生之前,已經保存了所有控件和頁面的,任何對page或者控件的改動都不會產生左右。暫時沒想到用來干啥。
Render: 它不是一個事件而是一個方法。工作就是把HTML寫回客戶端瀏覽器。
UnLoad: 頁面中的每一個控件都會發生這件事。在控件中,使用這個事件來做清理工作,例如關閉數據庫連接等。對與頁面本身也是做清理工作,例如關閉打開的文件和數據庫連接,或者結束日志或者其它指定的工作。
需要說明的是,每次Request都會創建一個全新的Page類的實例,所以在頁面中的自己定義的字段是不能在兩次request中傳遞值的,需要使用viewstate來存儲。
5, HttpHandler根據頁面生命周期中事件的處理把結果發回IIS,IIS再把結果發回客戶端瀏覽器。
值得注意的是,在這個過程中請求會再次通過HttpModule(注冊一個EndRequest事件)。
至此,整個Request結束。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美中文字幕精品| 国语对白做受69| 欧美激情视频播放| 亚洲最大成人免费视频| 一区二区三区黄色| 日韩精品在线观看视频| 精品亚洲一区二区三区在线播放| 国产一区二区三区18| 国内精品400部情侣激情| 2020久久国产精品| 亚洲视频在线看| 国产亚洲欧美另类中文| 青青青国产精品一区二区| www.亚洲人.com| 久久免费成人精品视频| 国产色综合天天综合网| 国产日韩综合一区二区性色av| 欧美成人午夜视频| 2018日韩中文字幕| 69久久夜色精品国产7777| 欧美中文字幕第一页| 久久夜色精品亚洲噜噜国产mv| 亚洲视频一区二区| 欧美日韩中文字幕在线视频| 日韩人体视频一二区| 欧美中文字幕精品| 国产精品日韩欧美| 欧美性猛交xxxx黑人猛交| 色综合老司机第九色激情| 久久人人看视频| 黄网动漫久久久| 91精品久久久久久久久久久| 欧美高清视频一区二区| 精品亚洲男同gayvideo网站| 在线视频欧美日韩精品| 亚洲精品乱码久久久久久按摩观| 精品国产拍在线观看| 这里只有精品在线播放| 欧美二区在线播放| 国产成人精品视频在线观看| 91视频8mav| 国产综合视频在线观看| 欧美成人午夜视频| 欧美日韩午夜视频在线观看| 亚洲国产中文字幕在线观看| 精品电影在线观看| 国产精品高潮视频| 欧美日韩一区二区免费在线观看| 久久影视电视剧免费网站清宫辞电视| 国产成人激情视频| 欧美性xxxx极品hd满灌| 亚洲欧美精品伊人久久| 欧美美最猛性xxxxxx| 国产欧美中文字幕| 欧美激情第99页| 国产日韩视频在线观看| 992tv成人免费视频| 成人精品视频99在线观看免费| 亚洲乱码国产乱码精品精| 亚洲色图综合久久| 2019亚洲日韩新视频| 深夜福利日韩在线看| 成人做爽爽免费视频| 欧美风情在线观看| 欧美激情日韩图片| 在线观看免费高清视频97| 欧美在线视频网| 按摩亚洲人久久| 日韩影视在线观看| 国产精品一区二区三区免费视频| 1769国产精品| 欧美尺度大的性做爰视频| 欧美成aaa人片在线观看蜜臀| 深夜福利日韩在线看| 亚洲色图色老头| 丰满岳妇乱一区二区三区| 最新91在线视频| 日韩成人在线观看| 中文字幕精品在线| 欧美激情久久久| 欧美成人精品不卡视频在线观看| 国产精品国产三级国产aⅴ9色| 色av吧综合网| 韩国视频理论视频久久| 亚洲精选一区二区| 精品日本高清在线播放| www.99久久热国产日韩欧美.com| 国产精品永久免费| 黄网站色欧美视频| 精品国产欧美一区二区五十路| 曰本色欧美视频在线| 国产精品久久77777| 国产精品pans私拍| 日本欧美一级片| 欧美又大又硬又粗bbbbb| 这里只有精品视频| 国产区亚洲区欧美区| 欧美日韩精品在线观看| 亚洲成人亚洲激情| 91精品视频在线| 国内精品久久久久| 国产日韩专区在线| 国产丝袜视频一区| 久久99精品久久久久久噜噜| 精品国产成人av| 秋霞成人午夜鲁丝一区二区三区| 久久久久女教师免费一区| www.精品av.com| 久久久久久久久亚洲| 中文字幕一精品亚洲无线一区| 亚洲天堂男人的天堂| 亚洲精品久久久久中文字幕欢迎你| 亚洲国产欧美一区| 97在线精品视频| 91精品久久久久久久久久久久久久| 久久久久免费视频| 高清视频欧美一级| 亚洲四色影视在线观看| 日韩久久精品电影| 亚洲偷熟乱区亚洲香蕉av| 欧美日韩亚洲高清| 欧美国产精品va在线观看| 中文字幕九色91在线| 国产乱肥老妇国产一区二| 国产亚洲精品美女久久久久| 精品国产欧美一区二区三区成人| 永久555www成人免费| 曰本色欧美视频在线| 69视频在线播放| 色悠久久久久综合先锋影音下载| 欧美壮男野外gaytube| 一区二区三区回区在观看免费视频| 欧美专区日韩视频| 久久久久久有精品国产| 亚洲色图美腿丝袜| 一区二区三区四区精品| 亚洲精品午夜精品| 亚洲精品视频免费在线观看| 欧美性一区二区三区| 国语自产在线不卡| 国内精品一区二区三区四区| 日韩在线观看免费全| 美女视频黄免费的亚洲男人天堂| 日韩在线视频中文字幕| 亚洲最大福利视频网| 69久久夜色精品国产69| 久久久女人电视剧免费播放下载| 91精品中文在线| 欧美成aaa人片在线观看蜜臀| 精品国产一区二区三区在线观看| 亚洲精品国产综合区久久久久久久| 国产精品麻豆va在线播放| 亚洲综合最新在线| 欧美大尺度在线观看| 日韩欧美国产激情| 97视频网站入口| 51色欧美片视频在线观看| 国产精品久久久精品| 美女av一区二区| 久久精品美女视频网站| 高清日韩电视剧大全免费播放在线观看| 中文字幕欧美精品在线| 久久久久久久久久久成人| 亚洲欧美国产高清va在线播|