ASP.NET - aspnet_isapi.dll如何构造页面类

时间:2012-09-12 08:09:07

标签: c# asp.net page-lifecycle

我们都知道,当收到abc.aspx的请求时,aspnet_isapi.dll会在其上运行并调用页面的processrequest方法。我的问题是它如何创建页面类的实例以及它如何调用页面生命周期。它实现了哪种模式?

好吧,我们都知道ASP.NET运行时调用处理程序的ProcessRequest来启动进程。我的问题是它是如何做到的。根据页面名称(abc.aspx",它创建了该类的abc并调用该类的一些方法。现在它是如何创建abc的对象的,这是我的问题。

4 个答案:

答案 0 :(得分: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对应的确切类型,和   然后创建该类型的实例。页面类型继承自   Page类并实现IHttpHandler接口。

答案 1 :(得分:1)

答案 2 :(得分:0)

答案 3 :(得分:0)

您可以尝试使用基于HttpContext.Response.Redirect

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