2012-09-12 29 views
0

我們都知道,當收到對abc.aspx的請求時,aspnet_isapi.dll會對其執行並調用頁面的processrequest方法。我的問題是,它如何創建頁面類的實例,以及它如何調用頁面生命週期。它實現了哪種模式?ASP.NET - aspnet_isapi.dll如何構造頁面類

那麼,我們所有人都知道ASP.NET運行時調用處理程序的ProcessRequest來啓動該進程。我的問題是它是如何做到的。在頁面名稱(abc.aspx)的基礎上,它創建了該類的abc並調用了該類的某些方法,現在它如何創建abc的對象,是我的問題。

回答

4

下面這段代碼嘗試是接收請求和發送響應之間發生的階段。

enter image description here

這是application life cycle

的執行處理程序的階段,其中該處理器(範圍限定於 URL的模塊)被調用來構造響應。對於.aspx文件,使用PageHandlerFactory處理程序來響應請求。對於 靜態文件,本機代碼StaticFileModule模塊響應 請求。

這是由PageHandlerFactory

所做的PageHandlerFactory創建的,從 Page類繼承並實現IHttpHandler接口的類的實例。動態創建的實例爲 ,用於處理ASP.NET文件的請求。 PageHandlerFactory類是ASP.NET頁面的默認處理程序工廠實現 。

PageHandlerFactory類實現IHttpHandlerFactory接口,爲ASP.NET文件提供默認HTTP處理程序。如果需要 ,PageHandlerFactory調用ASP.NET編譯系統進行編譯,並返回與該URL對應的確切類型,然後 然後創建該類型的實例。頁面類型繼承自頁面類並實現IHttpHandler接口。

+0

這可以幫助我想。 http://www.c-sharpcorner.com/Interviews/answer/1833/describe-the-role-of-inetinfo-exe-aspnet_isapi-dll-andaspne –

0

您可以根據HttpContext.Response.Redirect

public void ProcessRequest(HttpContext context) 
{ 
     context.Response.Write("<H1>This is an HttpHandler Test.</H1>");  
     context.Response.Redirect("YourPage.aspx"); 
}