我读过关于 Asp.Net 页面生命周期的精彩文章 http://www.codeproject.com/Articles/73728/ASP-NET-Application-and-Page-Life-Cycle .
我的理解是请求通过 MODULE(BeginRequest,authentica,author,prehandler...) HANDLER(Proccessrequest) PAGE(Init,viewstate,load,render,......,unload) MODULE(Posthandler, postrequescache、Endreques)。
上面的流程中 Global.asax(Application_start,Application_begin,....) 到底来自哪里?弄清楚这一点确实有帮助
Init 函数首先调用还是 Global.asax 函数?
感谢您宝贵的时间。
最佳答案
IIS 中的 ASP.NET 应用程序的结构如下图所示。我知道它看起来可能很吓人,但名字听起来应该很熟悉。希望熟悉的名字能让它更容易理解。
我不会用文字重复您在下面看到的结构。图片的效果比我用句子说的还要好。相反,我将直接讨论该图像对您的问题的影响。
应用程序域
什么是应用程序域?它是应用程序的系统内存的私有(private)分配。域内的所有代码都使用分配的域内存。这意味着静态类型和引用在域中共享。域之外的任何代码都无法访问该域的内存。
每个ASP.NET application在其所属的每个应用程序池的应用程序域内运行。无论应用程序池中的线程数如何,这种一对一的关系都成立。
Global.asax
什么是 Global.asax?最简单的是,它是一个继承自 System.Web.HttpApplication 的 .NET 类。 。 HttpApplication使 Global.asax 能够智能地引导所有 HTTP 请求通过请求管道。它将触发所有请求生命周期事件并在处理程序上调用 ProcessRequest。
每个ASP.NET application将创建 HttpApplication 的多个实例(全局.asax)。当收到请求时,它将被交给 HttpApplication 之一实例。然后,请求将保持不变 HttpApplication实例的生命周期。这意味着有一个 HttpApplication每个正在处理的请求的实例。每HttpApplication实例可以并且将会在其生命周期内被重用来处理许多请求。
应用程序事件
像 Application_Start 这样的应用程序事件在哪里关联?这取决于这些事件,其中一些事件涉及应用程序域,一些事件涉及 HttpApplication 。 Application_Start 和 Application_End 指的是应用程序域的开始和结束。其余的应用程序事件(例如 Application_Begin)是指 HttpApplication 的生命周期。实例。
关于asp.net - HTTPModules 和 Global.asax -- ASP.NET 页面生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13319996/