• Asp.Net复习篇之Asp.Net生命周期与Asp.Net页的生命周期


      Asp.Net生命周期与Asp.Net页的生命周期是一个比较重要的话题,有时可能似乎知道一些,但又说不出个所以然,而且时常把这两个概念混淆。现在也是该好好理清思路,把这两个概念搞懂。

    Asp.Net生命周期

       Asp.Net应用程序生命周期以浏览器向Web服务器(IIS)发送请求为起点。Web服务器接收到请求时,会对所请求文件的文件扩展名进行检查,确定应该由哪一个ISAPI扩展(Asp.Net是Web服务器下的一个ISAPI扩展)来处理请求,并传递给它(这里指Asp.Net)。Asp.Net处理已映射到其上的文件扩展名(.aspx,.ascx,ashx,asmx…)。

       当Asp.Net接收到应用程序中任何资源的第一个请求时,ApplicationManager这个类会创建一个应用程序域,并创建HostingEnviroment这个类的实例来提供有关应用程序的信息。

       Asp.Net会为每个请求创建并初始化核心对象(HttpContext,HttpRequest,HttpResponse)。

       Asp.Net初始化所有核心对象之后,将通过创建HttpApplication类的实例来启动应用程序,如果应用程序有Global.asax文件,则Asp.Net会创建Global.asax类的一个实例,并使用该派生类来表示应用程序。

       最后由HttpApplication管线来处理请求。

    总结

    Asp.Net生命周期大致由五大阶段构成:分别是:发出请求,接受请求,为每个请求创建核心对象,将HttpApplication对象分配给请求,由HttpApplication管线处理请求。

    应用程序域

    应用程序域是由CLR强制的一个边界,用来保证应用程序不受其他程序的影响。

    Asp.Net页面的生命周期

    Asp.Net页面运行时,此页面也会经历一个生命周期,在生命周期中将会执行一系列处理步骤。了解页面生命周期是非常重要的,因为这么做你就能够在生命周期的合适阶段编码。此外,如果你要开发自定义控件,就必须熟悉页面的生命周期,以便正确进行控件的初始化。一般来说,一个Asp.Net页面要经历下面几个阶段:

    1.浏览器提出请求

    浏览器提出请求发生在页面生命周期开始之前。浏览器请求页,Asp.Net将确定是否需要分析和编译页,或者是否可以在不运行页的情况下发送页的缓存版本。

    2.页面框架初始化 Page.Init

    Asp.Net在这个阶段开始创建页面,它产生你在.aspx页面里用标签定义的所有的控件。此外,如果页面是一次回送(POST),Asp.Net将反序列化视图状态信息并把它们应用到所有控件上。Page.Init事件被触发。

    3.用户代码初始化 Page.Load

    不管页面是Get请求还是POST请求,Page.Load事件会被触发。

    4.验证

    在验证期间,将调用所有控件的Validate方法,此方法将设置各个验证控件和页面的IsValid属性。

    5.事件处理

    在这个阶段,页面已经被完全装载且通过验证,Asp.Net将会触发在上次回发后发生的所有事件。

    6.呈现

    在呈现之前,会针对该页和所有控件保存视图状态。在呈现阶段中,会调用每个控件的Render方法。在这个阶段,页面和控件对象任然可以用,因此可以执行一些最终步骤.

    7.清除

    在这个阶段,页面开始执行清除工作,并触发Page.UnLoad事件,此时页面对象虽然还可以使用,但是最终的HTML已经被呈现且不可以修改。

  • 相关阅读:
    黄聪: PHP WkHtmlToPdf/WkHtmlToImage 将网页直接转换成pdf和图片
    黄聪:PHP页面跳转如何实现延时跳转
    黄聪:wkhtmltopdf解决分页问题
    黄聪:wkhtmtopdf--高分辨率HTML转PDF
    黄聪:Wordpress二级域名共享用户cookie出现错误解决方案及WP的Cookie机制
    黄聪:wordpress向一个页面POST数据,出现404页面访问不了
    黄聪:PHP解决textarea内容换行存入数据库,如何解析取出不能自动换行
    黄聪:PHP7.0中htmlspecialchars出错解决方案(wordpress)
    黄聪:WordPress: 使用 wp_insert_attachment 上传附件
    黄聪: 50 个 Bootstrap 插件
  • 原文地址:https://www.cnblogs.com/RookieBen/p/3330556.html
Copyright © 2020-2023  润新知