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

主頁 > 知識庫 > IIS處理Asp.net請求和Asp.net頁面生命周期詳細說明

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

熱門標簽:銅川小型外呼系統運營商 陜西人工外呼系統哪家好 山西防封卡電銷卡套餐 上海楊浦怎么申請申請400電話 地圖標注多個行程 云南外呼電銷機器人系統 浙江外呼系統怎么安裝 海外地圖標注門市標 廈門商鋪地圖標注
ASP.NET 頁運行時,此頁將經歷一個生命周期,在生命周期中將執行一系列處理步驟。這些步驟包括初始化、實例化控件、還原和維護狀態、運行事件處理程序代碼以及進行呈現。了解頁生命周期非常重要,因為這樣做您就能在生命周期的合適階段編寫代碼,以達到預期效果。此外,如果您要開發自定義控件,就必須熟悉頁生命周期,以便正確進行控件初始化,使用視圖狀態數據填充控件屬性以及運行任何控件行為代碼。(控件的生命周期基于頁的生命周期,但是頁引發的控件事件比單獨的 ASP.NET 頁中可用的事件多。)

      一般來說,頁要經歷下表概述的各個階段。除了頁生命周期階段以外,在請求前后還存在應用程序階段,但是這些階段并不特定于頁。(有關更多信息,請參見 MSDN:ASP.NET 應用程序生命周期概述。)

      我們知道最終我們在服務器上創建的頁面對象是通過Page的一個派生類來創建的,這個類通常情況下是看不到的,包括類的名字也不是我們直接指定的。這個類是由ASP.NET服務器根據我們的頁面模板文件aspx創建出來的,頁面對象的ProcessRequest方法將會啟動頁面的生成過程。這個過程是通過頁面的處理管道來完成的。

      下表列出了最常用的頁生命周期事件。除了列出的事件外還有其他事件;不過,大多數頁處理方案不使用這些事件。而是主要由 ASP.NET 網頁上的服務器控件使用,以初始化和呈現它們本身。如果要編寫自己的 ASP.NET 服務器控件,則需要詳細了解這些階段。(有關創建自定義控件的信息,請參見MDDN:開發自定義 ASP.NET 服務器控件。 )

      注意事項(來自MSDN):

      各個 ASP.NET 服務器控件都有自己的生命周期,該生命周期與頁生命周期類似。例如,控件的 InitLoad 事件在相應的頁事件期間發生。

      雖然 InitLoad 都在每個控件上以遞歸方式發生,但它們的發生順序相反。每個子控件的 Init 事件(還有 Unload 事件)在為其容器引發相應的事件之前發生(由下到上)。但是,容器的 Load 事件是在其子控件的 Load 事件之前發生(由上到下)。

可以通過處理控件的事件(如 Button 控件的 Click 事件和 ListBox 控件的 SelectedIndexChanged 事件)來自定義控件的外觀或內容。在某些情況下,可能也需處理控件的 DataBinding 或 DataBound 事件。有關更多信息,請參見各個控件的類參考主題以及開發自定義 ASP.NET 服務器控件。

      當從 Page 類繼承類時,除了可以處理由頁引發的事件以外,還可以重寫頁的基類中的方法。例如,可以重寫頁的 InitializeCulture 方法,以便動態設置區域性信息。注意,在使用 Page_事件語法創建事件處理程序時,將隱式調用基實現,因此無需在方法中調用它。例如,無論是否創建 Page_Load 方法,始終都會調用頁基類的 OnLoad 方法。但是,如果使用 override 關鍵字(在 Visual Basic 中為 Overrides)重寫頁的 OnLoad 方法,則必須顯式調用基方法。例如,如果在頁中重寫 OnLoad 方法,則必須調用 base.Load(在 Visual Basic 中為 MyBase.Load)以運行基實現。

IIS處理Asp.net請求

首先我們要弄清楚兩個非常重要的概念:
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發送回客戶端。看Page類的簽名:
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結束。

您可能感興趣的文章:
  • ASP.NET Web頁生命周期和執行的方法介紹
  • 詳解ASP.NET頁面生命周期事件
  • 詳解ASP.NET頁面生命周期
  • asp.net頁面生命周期詳解
  • 驗證一個ASP.NET應用程序和頁面的生命周期的實現代碼
  • ASP.NET服務器控件的生命周期分析
  • IIS處理Asp.net請求和Asp.net頁面生命周期說明
  • 深入理解Asp.Net中WebForm的生命周期

標簽:自貢 信陽 許昌 萊蕪 西雙版納 常州 朔州 孝感

巨人網絡通訊聲明:本文標題《IIS處理Asp.net請求和Asp.net頁面生命周期詳細說明》,本文關鍵詞  IIS,處理,Asp.net,請,求和,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《IIS處理Asp.net請求和Asp.net頁面生命周期詳細說明》相關的同類信息!
  • 本頁收集關于IIS處理Asp.net請求和Asp.net頁面生命周期詳細說明的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国精产品一区一区三区mba桃花 | 国产精品99久久久久久宅男| av综合在线播放| 日韩一级片在线观看| 亚洲影院在线观看| 91精品福利视频| 一区二区三区在线视频观看58| 97se狠狠狠综合亚洲狠狠| 亚洲欧洲精品一区二区三区| 成人高清在线视频| 亚洲三级理论片| 一区二区三区产品免费精品久久75| 成人免费黄色大片| 亚洲免费大片在线观看| 在线观看欧美精品| 青青草精品视频| 久久久久久久久免费| proumb性欧美在线观看| 一个色妞综合视频在线观看| 在线成人免费观看| 激情成人综合网| 中文字幕成人网| 在线国产电影不卡| 精品无人区卡一卡二卡三乱码免费卡| 久久综合av免费| 色综合久久天天| 午夜影视日本亚洲欧洲精品| 欧美成人性战久久| 99精品国产视频| 美国一区二区三区在线播放| www国产成人免费观看视频 深夜成人网| 国产毛片精品国产一区二区三区| 国产精品视频一二| 欧美一区二区三区视频在线| 国产91对白在线观看九色| 亚洲日本丝袜连裤袜办公室| 欧美中文字幕一区| 国产精品一区二区免费不卡| 一区二区三区在线视频观看58| 精品电影一区二区| 91国内精品野花午夜精品| 免费欧美高清视频| 亚洲靠逼com| 国产片一区二区| 69p69国产精品| 91浏览器打开| 国产成人aaa| 麻豆一区二区99久久久久| 亚洲国产精品一区二区尤物区| 中文av一区特黄| 欧美变态口味重另类| 欧美精品久久久久久久多人混战 | 国产综合色产在线精品| 一区二区三区中文免费| 国产精品久99| 国产香蕉久久精品综合网| 日韩欧美在线网站| 911精品产国品一二三产区| 91黄色激情网站| 91蜜桃网址入口| 高清不卡一二三区| 国产福利一区二区三区视频| 全国精品久久少妇| 蜜桃视频一区二区三区 | 三级成人在线视频| 亚洲国产欧美一区二区三区丁香婷| 国产精品伦一区| 综合电影一区二区三区 | 久久久久久久性| 久久蜜桃一区二区| 久久久久久久久久久99999| 欧美日韩精品一区二区三区| 首页国产欧美久久| 国产激情一区二区三区桃花岛亚洲| 欧美日韩日日骚| 色综合久久天天综合网| 亚洲综合久久久久| 亚洲国产高清在线观看视频| 日韩一级成人av| 久久久久久一级片| 亚洲欧美综合色| 午夜精品在线看| 视频一区视频二区中文字幕| 亚洲大片一区二区三区| 久久久不卡网国产精品二区| 久久久久久久一区| 日韩精品一区二区三区视频播放| 精品国产伦理网| 日韩视频一区二区| 26uuu久久综合| 日韩欧美国产综合一区| 国产人成亚洲第一网站在线播放| 欧美成人a视频| 亚洲视频一区二区在线观看| 久久婷婷综合激情| 亚洲欧美另类小说| 亚洲人成网站色在线观看 | av影院午夜一区| 欧美日韩一区二区电影| 91久久奴性调教| 精品国产免费久久| 91精品国产麻豆| 国产精品伦一区二区三级视频| 国产欧美视频一区二区| 日韩福利电影在线| 精品国产免费视频| 亚洲高清不卡在线观看| 国产精品综合在线视频| 国产福利精品一区| 欧美高清你懂得| 久久久久久久综合日本| 中文字幕国产一区二区| 亚洲欧美激情视频在线观看一区二区三区| 国产精品午夜免费| 久久精品国产精品亚洲红杏 | 国产精品久久久久久久久果冻传媒| 在线不卡的av| 一区二区三区四区激情| 国产suv精品一区二区6| 日本伦理一区二区| 国产亚洲精品精华液| 一区二区在线免费观看| 成人免费看视频| 精品视频免费在线| 亚洲猫色日本管| 久久精品999| 欧美变态口味重另类| 日精品一区二区三区| 成人综合在线视频| 国产欧美日韩中文久久| 亚洲一区二区三区精品在线| 午夜精品视频在线观看| 国产成人精品免费网站| 欧美特级限制片免费在线观看| 久久精品综合网| 国产不卡在线视频| 91精品久久久久久久99蜜桃 | 一区二区在线观看av| 91丨porny丨国产| 3atv一区二区三区| 亚洲一区在线观看免费| 国产福利一区在线| 欧美电视剧免费观看| 依依成人综合视频| 国产成人精品aa毛片| 国产精品视频你懂的| 成人av综合在线| 欧美大黄免费观看| 国产成人免费视频精品含羞草妖精| 91高清视频免费看| 日韩在线卡一卡二| 色天使久久综合网天天| 亚洲综合在线视频| 97久久精品人人做人人爽| 亚洲人被黑人高潮完整版| 欧美亚洲图片小说| 一区二区三区欧美视频| 欧美午夜精品久久久久久超碰 | 国产一本一道久久香蕉| 国产精品美女一区二区| a在线播放不卡| 中文字幕欧美三区| 在线观看精品一区| 亚洲综合一区二区精品导航| 91精品国产91久久久久久一区二区 | 波多野结衣亚洲一区| 欧美亚洲动漫精品| 美女网站色91| 中文字幕日韩一区| 成人性生交大片| 日韩影院免费视频| 日韩情涩欧美日韩视频| 成人免费黄色在线| 国产精品免费网站在线观看| 欧美性淫爽ww久久久久无| 狠狠色综合日日| 久久久久成人黄色影片| 91精品1区2区| 视频一区二区三区中文字幕| 国产精品国产精品国产专区不片 | 色成人在线视频| 亚洲一线二线三线久久久| 国产亚洲一区二区在线观看| 久久国产精品99精品国产| 一区二区在线电影| 欧美精品亚洲一区二区在线播放| 高清视频一区二区| 欧美bbbbb| 国产精品天干天干在观线| 欧美一二三四区在线| 国产一区二区精品在线观看| 一区二区三区在线视频观看| 3d成人h动漫网站入口| 色婷婷亚洲综合| 国产福利一区二区| 亚洲高清免费观看高清完整版在线观看| 欧美变态口味重另类| 成人av影视在线观看| 久久精品国内一区二区三区| 91麻豆精品国产91久久久资源速度|