0

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

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

4

4 回答 4

4

以下是接收请求和发送响应之间发生的阶段。

在此处输入图像描述

这是应用程序生命周期

执行处理程序阶段,其中调用处理程序(范围为 URL 的模块)来构造响应。对于 .aspx 文件,PageHandlerFactory 处理程序用于响应请求。对于静态文件,本机代码 StaticFileModule 模块会响应请求。

这是由PageHandlerFactory完成的

PageHandlerFactory 创建从 Page 类继承并实现 IHttpHandler 接口的类的实例。动态创建实例以处理对 ASP.NET 文件的请求。PageHandlerFactory 类是 ASP.NET 页面的默认处理程序工厂实现。

PageHandlerFactory 类实现 IHttpHandlerFactory 接口以为 ASP.NET 文件提供默认的 HTTP 处理程序。如果需要,PageHandlerFactory 调用 ASP.NET 编译系统进行编译,并返回与 URL 对应的确切类型,然后创建该类型的实例。页面类型继承自 Page 类,实现了 IHttpHandler 接口。

于 2012-09-12T08:27:15.623 回答
1

我想这就是你要找的..

http://www.west-wind.com/presentations/howaspnetworks/howaspnetworks.asp

于 2012-09-12T09:04:19.187 回答
0

这种事情有据可查:

http://msdn.microsoft.com/en-us/library/ms178472(v=vs.100).aspx

于 2012-09-12T08:12:25.160 回答
0

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

public void ProcessRequest(HttpContext context)
{
        context.Response.Write("<H1>This is an HttpHandler Test.</H1>");      
        context.Response.Redirect("YourPage.aspx");
}
于 2012-09-12T08:19:17.043 回答