zoukankan      html  css  js  c++  java
  • ASP.NET页面生命周期

            有很多理由去解释理解ASP.NET页面生命周期是非常重要的,主要是要去理解什么地方放置什么特定的方法,什么时候我们应该设置什么相关的属性。如果去开发自定义的服务器控件,理解生命周期对纠正控件初始化时候的错误,以及使用view-state和后台代码设置属性是非常有用的。(控件事件只与ASP.NET页面相关)

            页面生命周期要看它是否是第一次请求,还是回发(本身页面请求),最后决定是否到Web服务器。当一个网页被Web服务器请求时,在回发到web浏览器之前,会经过一系列步骤/事件(如初始化,控件实例化,state的恢复和保存,执行事件处理代码,渲染)。

            如果我们正确地使用和操作页面生命周期事件,它对web应用程序开发会是一个非常方便和强大的工具。

           IIS : 它是Microsoft .NET默认的web服务器。IIS帮助你发布web sites和web application。当IIS Web服务器接受一个Web资源(文件)的请求,它检查文件的扩展名(例如:.aspx, ascx, .ashx 和.asmx),然后决定使用哪个 ISAPI 扩展来处理这个请求,然后传递这个请求给正确的 ISAPI扩展。

           ASPNET_ISAPI.DLL: IIS加载这个dll,然后将页面请求发送给这个dll。这个dll为进一步处理而加载HTTPRuntime 。
           ASPNET_WP.EXE:它包含了应用程序池。每个应用程序池可以包含任意数量的应用程序。应用程序池也称为应用程序域。当一个网页被请求时,查找IIS的当前的应用程序正在运行的应用程序池,并且将请求转发到各自的工作进程。
           通常浏览器每次发送请求的时候,页面的生命周期每次都会执行一遍,页面的实例被创建、HTTP 运行时调用ProcessRequest 、然后执行起始页。
          下面的表格显示了每个阶段和相应的事件:
    阶段 事件/方法  
    页面初始化   Page_Init 
    加载View State    LoadViewState  
    回发数据处理 LoadPostData  
    页面加载  Page_Load  
    回发通知   RaisePostDataChangedEvent 
    回发事件处理 RaisePostBackEvent 
    页面预渲染 Page_PreRender  
    保存viewstate SaveViewState  
    Page渲染   Page_Render  
    Page 卸载 Page_UnLoad  
     
          Asp.net确定对一个用户发起的页面请求是被解析和编译还是发送提供的网页缓存。在生命周期之前,变化非常多。在这之后,检查这个请求是否是正常的请求,在此之后,还要求检查的是一个正常的要求,回发,跨页回发或回调。
         该页面构造函数创建的控件树,在HTTP运行时实例化页面类来处理请求。
    PreInit
    这一事件是在页面生命周期的开始。每个页面控件初始化和根据aspx代码设置属性。
       可以改变或设置母版页或者主题
       创建或重新创建动态控件。
       读取或设置配置属性值。
    Init
    首先, Page的Init事件发生,然后页面上每个控件Init事件发生。在此阶段,Viewstate 信息是不可用的。
       控件已经被初始化
       如果有的话,主题皮肤被应用。
       初始化控件属性
    InitComplete
        此事件是用来处理所有要求初始化都完成的任务。
    PreLoad
        此事件发生在执行任何处理之前,在Load之前发生。使用这个事件,如果您在Load事件之前,需要在网页或者控件上执行相关的处理,页面实例引发此事件之前,它为页面和所有的控件加载view state 。然后处理回发数据的任何附带要求的实例。
    Load
       在控件中设置属性, 建立数据库的连接
    Control Events
       有一些控件的特定的事件,例如: Button Click, DropDownIndexChanged 等等。
    Load Complete
       这些事件用来处理一些在Load事件处理完成之后需要处理的任务。
    PreRender
       在这种事件中,页面可以确保所有子控件都被创建。页面为所有的子控件调用EnsureChildControls也包括自己。每一个控件的数据源/绑定属性设置为它的绑定方法调用。
    SaveStateComplete
       这个事件发生在页面和所有的控件的编码和保存viewstate之后。
    Render
       每一个asp.net控件都有渲染方法,页面的实例调用此方法并输出控件的标记
    Unload
       Unload事件用来执行清除任务,像关闭数据库连接,关闭打开的文件,完成日志,以及一些其他的任务。该事件首先针对每个控件发生,继而针对该页发生。
     
     



    (全文完)


    以下为广告部分

    您部署的HTTPS网站安全吗?

    如果您想看下您的网站HTTPS部署的是否安全,花1分钟时间来 myssl.com 检测以下吧。让您的HTTPS网站变得更安全!

    SSL检测评估

    快速了解HTTPS网站安全情况。

    安全评级(A+、A、A-...)、行业合规检测、证书信息查看、证书链信息以及补完、服务器套件信息、证书兼容性检测等。

    SSL证书工具

    安装部署SSL证书变得更方便。

    SSL证书内容查看、SSL证书格式转换、CSR在线生成、SSL私钥加解密、CAA检测等。

    SSL漏洞检测

    让服务器远离SSL证书漏洞侵扰

    TLS ROBOT漏洞检测、心血漏洞检测、FREAK Attack漏洞检测、SSL Poodle漏洞检测、CCS注入漏洞检测。

  • 相关阅读:
    Windows服务BAT命令-安装、卸载、启动、停止
    身份认证
    密钥管理概述
    快速上手几个Linux命令
    递归
    数字签名的实现方案
    数字签名
    密码学基础
    你可以把Linux内核当成一家软件外包公司的老板
    数学归纳法
  • 原文地址:https://www.cnblogs.com/zhuqil/p/Page_Life_Cycle_Explain.html
Copyright © 2011-2022 走看看