天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

HttpApplication的認識與加深理解

  HttpApplication對象是經(jīng)由HttpApplicationFactory.GetApplicationInstance(并最終調(diào)用HttpRuntime.CreateNonPublicInstance)創(chuàng)建的HttpApplicationFactory它的主要任務(wù)是使用 URL 信息來查找 URL 虛擬目錄和匯集的 HttpApplication 對象之間的匹配關(guān)系。

  這個工廠類的行為概括為有以下幾點

  1、工廠類維護, HttpApplication 對象池并使用它們來處理應(yīng)用程序的請求。池的壽命與應(yīng)用程序的壽命相同。

  2、應(yīng)用程序的第一個請求到達時,工廠類提取有關(guān)應(yīng)用程序類型的信息(global.asax 類)、設(shè)置用于監(jiān)視更改的文件、創(chuàng)建應(yīng)用程序狀態(tài)并觸發(fā) Application_OnStart 事件。工廠類從池中獲取一個 HttpApplication 實例,并將要處理的請求放入實例中。如果沒有可用的對象,則創(chuàng)建一個新的 HttpApplication 對象。要創(chuàng)建 HttpApplication 對象,需要先完成 global.asax 應(yīng)用程序文件的編譯。

  3、HttpApplication 開始處理請求,并且只能在完成這個請求后才能處理新的請求。如果收到來自同一資源的新請求,則由池中的其他對象來處理。

  4、應(yīng)用程序?qū)ο笤试S所有注冊的 HTTP 模塊對請求進行預(yù)處理,并找出最適合處理請求的處理程序類型。這通過查找請求的 URL 的擴展和配置文件中的信息來完成。

  HttpApplicationFactory.GetApplicationInstance創(chuàng)建HttpApplication實例中有三個關(guān)鍵方法:

  HttpApplicationFactory._theApplicationFactory.EnsureInited()  該方法檢查HttpApplicationFactory是否被初始化,如果沒有,就通過HttpApplicationFactory.Init()進行初始化。在Init()中,先獲取global.asax文件的完整路徑,然后調(diào)用CompileApplication()對global.asax進行編譯。

HttpApplicationFactory._theApplicationFactory.EnsureAppStartCalled(context)  創(chuàng)建特定的HttpApplication實例,觸發(fā)ApplicationOnStart事件,執(zhí)行ASP.global_asax中的Application_Start(object sender, EventArgs e)方法。這里創(chuàng)建的HttpApplication實例在處理完事件后,就被回收。

  HttpApplicationFactory._theApplicationFactory.GetNormalApplicationInstance(context) 該方法創(chuàng)建HttpApplication實例并進行初始化,調(diào)用System.Web.HttpApplication.InitInternal()方法。創(chuàng)建HttpApplication實例是根據(jù)實際的_theApplicationType進行創(chuàng)建。如果Web目錄中沒有g(shù)lobal.asa文件,也就是說沒有動態(tài)編譯生成ASP.global_asax類型,那就直接實例化  HttpApplication。如果創(chuàng)建了ASP.global_asax類型,那就對ASP.global_asa進行實例化。

  創(chuàng)建HttpApplication實例之后就是調(diào)用實例的InitInternal方法。
  InitInternal方法的主要功能如下:
    1. InitModules():根據(jù)Web.Config的設(shè)置,創(chuàng)建相應(yīng)的HttpModules。

    2. HookupEventHandlersForAppplicationAndModules:根據(jù)發(fā)生的事件,調(diào)用HttpApplication實例中相應(yīng)的事件處理函數(shù)。

  3. 創(chuàng)建很多實現(xiàn)IExecutionStep接口的類的實例并添加到當(dāng)前HttpApplication實例的_execSteps中,等待回調(diào)時執(zhí)行。從這里我們可以看到HttpApplication是以異步的方式處理請求, 對請求的很多處理工作都放入了_execStep等待回調(diào)時執(zhí)行。

     _execStep中主要的處理工作如下:
    1) 對請求的路徑進行安全檢查,禁止非法路徑訪問(ValidatePathExecutionStep)。
    2) 如果設(shè)置了UrlMappings, 進行RewritePath(UrlMappingsExecutionStep)。
    3) 執(zhí)行事件處理函數(shù),比如:BeginRequest、AuthenticateRequest等等。

  下面就是獲取處理當(dāng)前請求的HttpHandler,ASP.NET頁面的動態(tài)編譯也是在這里進行的。至此HttpApplication流程將會轉(zhuǎn)到HttpHandler流程.也就是說HttpApplication 對象負責(zé)查找應(yīng)該使用哪種處理程序來處理請求。HttpApplication 對象還負責(zé)檢測對動態(tài)創(chuàng)建的、表示資源的程序集(如 .ASPx 頁面或 .asmx Web 服務(wù))所進行的更改。如果檢測到更改,應(yīng)用程序?qū)ο髮⒋_保編譯并加載所請求的資源的最新來源。HttpApplication調(diào)用ProcessRequest方法來處理用戶請求,此方法會調(diào)用對應(yīng)的HttpHandler來處理用戶請求,HttpHandler根據(jù)用戶請求的文件的擴展名處理請求,并把請求的結(jié)果,也就是HTML發(fā)送到客戶瀏覽器.

  HttpApplication是HttpRuntime所創(chuàng)建的嗎? 并不是,HttpRuntime只是向HttpApplicationFactory提出請求,要求返回一個HttpApplication對象。HttpApplicationFactory在接收到請求后,會先檢查是否有已經(jīng)存在并空閑的對象,如果有就取出一個HttpApplication對象返回給HttpRuntime,如果沒有的話,則要創(chuàng)建一個HttpApplication對象給HttpRunTime。

  關(guān)于HttpApplication這個類的方法的實現(xiàn),就不再一一解釋,需要了解的,在類里面寫上一個HttpApplication單詞,然后右鍵選擇“轉(zhuǎn)到定義“,就可以看到里面的元數(shù)據(jù)了。

  從上面看出global類與HttpApplication十分緊密,其事上,global類是繼承與System.Web.HttpApplication類。

public class Global : System.Web.HttpApplication
    {

        
protected void Application_Start(object sender, EventArgs e)
        {

        }
        
//省略
    }

NET技術(shù)HttpApplication的認識與加深理解,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产高清免费观看 | 国产成人精品综合久久久 | 久久a级片| 老阿姨才是最有味的一区二区 | 精品无码国产自产在线观看 | 国产精品嫩草影院在线观看免费 | 3acg同人漫画禁图h | 99视频精品全部免费免费观 | 亚洲精品中文字幕一二三四区 | 观看免费做视频 | 日本一本免费线观看视频 | 失禁 调教 刺激 哭喊男男 | 国产亚洲AV无码成人网站 | 日韩亚洲国产欧美免费观看 | 男人插曲女人下生免费大全 | 久久久无码精品亚洲欧美 | 无套内谢大学生A片 | 大地影院日本韩国电影免费观看 | 女人张腿让男人桶免费 | 最新无码国产在线视频2020 | 亚洲卫视论坛 | 亚瑟天堂久久一区二区影院 | 97精品国产自产在线观看永久 | 亚洲字幕久久 | 乱h好大噗嗤噗嗤烂了 | 男人的天堂色 | 国产日韩成人内射视频 | 久久热国产在线视频 | 欧美乱码伦视频免费66网 | 大桥未久与黑人中出视频 | 国产亚洲精品香蕉视频播放 | 用快播看av的网站 | 亚洲午夜久久久久久久久电影网 | 免费鲁丝片一级在线观看 | 午夜伦理在线观看 | 99在线这精品视频 | 午夜在线观看免费观看 视频 | 强奷漂亮女老板在线播放 | 十七岁日本免费完整版BD | 天天狠狠弄夜夜狠狠躁·太爽了 | 少妇大荫蒂毛多毛大 |