請求進入 ASP.NET 引擎時將會發生什麼情況

來源:互聯網
上載者:User

ASP.NET 之前,需要使用 ISAPI 篩選器來實現 IIS Web 服務器上的 URL 重寫。由於 ASP.NET 引擎與 IIS 非常相似,因此可以使用 ASP.NET 進行 URL 重寫。存在相似之處的原因在於 ASP.NET 引擎可以實現以下功能:

  • 在處理請求時可以引發事件。

  • 允許任意數量的 HTTP 模組處理所引發的事件,這與 IIS 的 ISAPI 篩選器相似。

  • 將呈現被請求資源這項任務委託給 HTTP 處理常式,該處理常式與 IIS 的 ISAPI 擴充相似。

與 IIS 一樣,ASP.NET 引擎在請求的有效期間內將會觸發事件,通過發訊號來表示其處理過程從一個狀態改變為了另一個狀態。例如,當 ASP.NET 引擎首次響應請求時,BeginRequest事件將被觸發。接下來觸發的是AuthenticateRequest事件,該事件在已建立使用者標識時出現。(此外,還有大量的其他事件:AuthorizeRequestResolveRequestCacheEndRequest,等等。這些事件屬於System.Web.HttpApplication類;有關詳細資料,請參閱位於以下網址的技術文檔:HttpApplication Class Overview。)


如上一部分所討論的,可以建立 ISAPI 篩選器以響應 IIS 引發的事件。同樣,ASP.NET 提供了 HTTP 模組,該模組可以響應由
ASP.NET 引擎引發的事件。可以將 ASP.NET Web 應用程式配置為具有多個 HTTP 模組。對於由 ASP.NET
引擎處理的每個請求,將初始化每個已配置的 HTTP
模組,並允許將事件處理常式綁定到處理請求期間所引發的事件。請注意,對每個請求均使用了許多內建 HTTP 模組。其中的一個內建 HTTP 模組是FormsAuthenticationModule,該模組首先檢查是否使用了表單身分識別驗證,如果使用,將檢查是否對使用者進行了身分識別驗證。如果沒有使用,會自動將使用者重新導向到指定的登入頁面。


上所述,通過使用 IIS,傳入請求將最終發送給 ISAPI 擴充,而 ISAPI 擴充的任務是返回特定請求的資料。例如,在請求傳統的 ASP
網頁時,IIS 將請求傳遞給 asp.dll ISAPI 擴充,該擴充的任務是返回被請求的 ASP 頁面的 HTML 標籤。ASP.NET
引擎使用相似的方法。初始化 HTTP 模組後,ASP.NET 引擎的下一項任務是確定應由哪個 HTTP 處理常式來處理請求。

所有通
過 ASP.NET 引擎傳遞的請求最終都將到達 HTTP 處理常式或 HTTP 處理常式工廠(HTTP 處理常式工廠僅返回 HTTP
處理常式的執行個體,然後使用該執行個體來處理請求)。最終的 HTTP 處理常式將返迴響應,即呈現被請求的資源。此響應將被發送回 IIS,然後 IIS
將響應返回給提出請求的使用者。

ASP.NET 包括許多內建的 HTTP 處理常式。例如,PageHandlerFactory用於呈現 ASP.NET 網頁。WebServiceHandlerFactory用於呈現 ASP.NET Web 服務的響應 SOAP 信封。TraceHandler將向trace.axd呈現請求的 HTML 標籤。


2 描述了如何處理對 ASP.NET 資源的請求。首先,IIS 接收到請求,並將請求調度給
aspnet_isapi.dll。接下來,ASP.NET 引擎對已配置的 HTTP 模組進行初始化。最後將調用正確的 HTTP
處理常式,並呈現被請求的資源,將所產生的標記返回給 IIS 和請求用戶端。

 


ASP.NET 之前,需要使用 ISAPI 篩選器來實現 IIS Web 服務器上的 URL 重寫。由於 ASP.NET 引擎與 IIS
非常相似,因此可以使用 ASP.NET 進行 URL 重寫。存在相似之處的原因在於 ASP.NET 引擎可以實現以下功能:

  • 在處理請求時可以引發事件。

  • 允許任意數量的 HTTP 模組處理所引發的事件,這與 IIS 的 ISAPI 篩選器相似。

  • 將呈現被請求資源這項任務委託給 HTTP 處理常式,該處理常式與 IIS 的 ISAPI 擴充相似。

與 IIS 一樣,ASP.NET 引擎在請求的有效期間內將會觸發事件,通過發訊號來表示其處理過程從一個狀態改變為了另一個狀態。例如,當 ASP.NET 引擎首次響應請求時,BeginRequest事件將被觸發。接下來觸發的是AuthenticateRequest事件,該事件在已建立使用者標識時出現。(此外,還有大量的其他事件:AuthorizeRequestResolveRequestCacheEndRequest,等等。這些事件屬於System.Web.HttpApplication類;有關詳細資料,請參閱位於以下網址的技術文檔:HttpApplication Class Overview。)


如上一部分所討論的,可以建立 ISAPI 篩選器以響應 IIS 引發的事件。同樣,ASP.NET 提供了 HTTP 模組,該模組可以響應由
ASP.NET 引擎引發的事件。可以將 ASP.NET Web 應用程式配置為具有多個 HTTP 模組。對於由 ASP.NET
引擎處理的每個請求,將初始化每個已配置的 HTTP
模組,並允許將事件處理常式綁定到處理請求期間所引發的事件。請注意,對每個請求均使用了許多內建 HTTP 模組。其中的一個內建 HTTP 模組是FormsAuthenticationModule,該模組首先檢查是否使用了表單身分識別驗證,如果使用,將檢查是否對使用者進行了身分識別驗證。如果沒有使用,會自動將使用者重新導向到指定的登入頁面。


上所述,通過使用 IIS,傳入請求將最終發送給 ISAPI 擴充,而 ISAPI 擴充的任務是返回特定請求的資料。例如,在請求傳統的 ASP
網頁時,IIS 將請求傳遞給 asp.dll ISAPI 擴充,該擴充的任務是返回被請求的 ASP 頁面的 HTML 標籤。ASP.NET
引擎使用相似的方法。初始化 HTTP 模組後,ASP.NET 引擎的下一項任務是確定應由哪個 HTTP 處理常式來處理請求。

所有通
過 ASP.NET 引擎傳遞的請求最終都將到達 HTTP 處理常式或 HTTP 處理常式工廠(HTTP 處理常式工廠僅返回 HTTP
處理常式的執行個體,然後使用該執行個體來處理請求)。最終的 HTTP 處理常式將返迴響應,即呈現被請求的資源。此響應將被發送回 IIS,然後 IIS
將響應返回給提出請求的使用者。

ASP.NET 包括許多內建的 HTTP 處理常式。例如,PageHandlerFactory用於呈現 ASP.NET 網頁。WebServiceHandlerFactory用於呈現 ASP.NET Web 服務的響應 SOAP 信封。TraceHandler將向trace.axd呈現請求的 HTML 標籤。


2 描述了如何處理對 ASP.NET 資源的請求。首先,IIS 接收到請求,並將請求調度給
aspnet_isapi.dll。接下來,ASP.NET 引擎對已配置的 HTTP 模組進行初始化。最後將調用正確的 HTTP
處理常式,並呈現被請求的資源,將所產生的標記返回給 IIS 和請求用戶端。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.