我们都知道,当收到abc.aspx的请求时,aspnet_isapi.dll会在其上运行并调用页面的processrequest方法。我的问题是它如何创建页面类的实例以及它如何调用页面生命周期。它实现了哪种模式?
好吧,我们都知道ASP.NET运行时调用处理程序的ProcessRequest来启动进程。我的问题是它是如何做到的。根据页面名称(abc.aspx",它创建了该类的abc并调用该类的一些方法。现在它是如何创建abc的对象的,这是我的问题。
答案 0 :(得分:4)
以下是接收请求和发送响应之间发生的阶段。
完成的执行处理程序阶段,其中处理程序(作用于...的模块) 调用URL)来构造响应。对于.aspx文件, PageHandlerFactory处理程序用于响应请求。对于 静态文件,本机代码StaticFileModule模块响应 请求。
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");
}