• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 軟件測試技術ASP.NET頁面請求原理淺析

    發表于:2009-08-12來源:作者:點擊數: 標簽:軟件測試AspNetNETASP
    軟件測試技術 ASP.NET頁面請求原理淺析 軟件測試方法 關鍵字:ASP.NET 頁面請求 每一個ASP.NET程序執行時都會對當前URL的請求進行解析,本文將分析ASP.NET頁面請求的原理。當我們在瀏覽器上輸入一個URL時, 流程如下: 首先被WWW 服務器 截獲(inetinfo.exe進
    軟件測試技術ASP.NET頁面請求原理淺析   軟件測試方法

    關鍵字:ASP.NET 頁面請求

      每一個ASP.NET程序執行時都會對當前URL的請求進行解析,本文將分析ASP.NET頁面請求的原理。當我們在瀏覽器上輸入一個URL時, 流程如下:

      首先被WWW服務器截獲(inetinfo.exe進程), 該進程首先判斷頁面后綴, 然后根據IIS中配置決定調用具體的擴展程序。

      如aspx就會調用aspnet_isapi.dll, 然后由aspnet_isapi.dll發送給w3wp.exe(iis 工作者進程,IIS6.0中叫做 w3wq.exe,IIS5.0中叫做 aspnet_wp.exe).

      接下來就是w3wp.exe調用.net類庫進行具體處理,流程如下:

      ISAPIRuntime—>HttpRuntime—>HttpApplicationFactory—>HttpApplication—>HttpModule—HttpHandlerFactory—>HttpHandle

      1. ISAPIRuntime

      主要作用是調用一些非托管代碼生成HttpWorkerRequest對象,HttpWorkerRequest對象包含當前請求的所有信息,然后傳遞給HttpRuntime,這里生成的HttpWorkerRequest對象可以直接在我們的頁面中調用的,通過它取得原始的請求信息:

      2. HttpRuntime

      a. 根據HttpWorkerRequest對象生成HttpContext,HttpContext包含request、response等屬性;

      b. 調用HttpApplicationFactory來生成IHttpHandler(這里生成的是一個默認的HttpApplication對象,HttpApplication也是 IHttpHandler接口的一個實現)

      c. 調用HttpApplication對象執行請求

      3. HttpApplicationFactory.

      主要是生成一個HttpApplication對象:

      首先會查看是否存在global.asax文件,如果有的話就用它來生成HttpApplication對象,從這里我們可以看到global.asax的文件名是在asp.net的框架中寫死的,不能修改的。如果這個文件不存在就使用默認的對象。

      4. HttpApplication

      這個是比較復雜也比較重要的一個對象, 首先是執行初始化操作,比較重要的一步就是進行HttpModule的初始化:

      HttpApplication代表著程序員創建的Web應用程序。HttpApplication創建針對此Http請求的 HttpContext對象,這些對象包含了關于此請求的諸多其他對象,主要是HttpRequest、HttpResponse、HttpSessionState等。這些對象在程序中可以通過Page類或者Context類進行訪問。

      它會讀取web.config中所有HttpModule的配置

      5. HttpModule

      6. HttpHandlerFactory

      7. HttpHandler

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>