• Global.asax.cs中的方法的含义 Application_AcquireRequestState验证Session[轉]


    轉自:http://hi.baidu.com/zzticzh/blog/item/ee33a2774a0a4419b051b9be.html

    [ASP.NET 1.1]Global.asax.cs中的方法的含义
       
    今天有同事叫我解释一下Global.asax.cs中的方法的含义,整理一下,发出来给大家看看。

    跟Request有关的放到后面一起说,先说其他的5个。

    Application_Init:在每一个HttpApplication实例初始化的时候执行。

    Application_Disposed:在每一个HttpApplication实例被销毁之前执行。

    Application_Error:所有没有处理的错误都会导致这个方法的执行。

    Application_Start:在程序初始化的时候执行。在Web应用程序的生命周期里就执行一次(自动的重新启动算另外一次生命周期),这里只能放一些公用的信息,比如HttpApplicationState。

    Application_End:应用程序结束时,在最后一个HttpApplication销毁之后执行。对应Application_Start,在整个生命周期里面也是只执行一次。

    下面来看看跟Request有关的,首先我们来看看相应的事件执行顺序:

    1.         BeginRequest

    2.         AuthenticateRequest

    3.         AuthorizeRequest

    4.         ResolveRequestCache

    5.         AcquireRequestState

    6.         PreRequestHandlerExecute

    7.         PostRequestHandlerExecute

    8.         ReleaseRequestState

    9.         UpdateRequestCache

    10.     EndRequest

    另外还有两个:

    1.         PreSendRequestHeaders

    2.         PreSendRequestContent

    这两个事件的顺序是无法确定的,按照MSDN的说法,它们随时都可能发生。下面就按这个顺序来解释一下它们在Global.asax.cs中相应的事件处理方法的含义。

    Application_BeginRequest:BeginRequest是在收到Request时第一个触发的事件,这个方法自然就是第一个执行的了。

    Application_AuthenticateRequest:当安全模块已经建立了当前用户的标识后执行。

    Application_AuthorizeRequest:当安全模块已经验证了当前用户的授权时执行。

    Application_ResolveRequestCache:当ASP.NET完成授权事件以使缓存模块从缓存中为请求提供服务时发生,从而跳过处理程序(页面或者是WebService)的执行。这样做可以改善网站的性能,这个事件还可以用来判断正文是不是从Cache中得到的。

    Application_AcquireRequestState:当ASP.NET获取当前请求所关联的当前状态(如Session)时执行(真是拗口啊,msdn上就这样写的,我自己想不出什么好句子了)。

    Application_PreRequestHandlerExecute:当ASP.Net即将把请求发送到处理程序对象(页面或者是WebService)之前执行。这个时候,Session就可以用了。

    Application_PostRequestHandlerExecute:当处理程序对象(页面或者是WebService)工作完成之后执行。

    Application_ReleaseRequestState:在ASP.NET执行完所有请求处理程序后执行。ReleaseRequestState事件将使当前状态数据被保存。

    Application_UpdateRequestCache:在ASP.NET执行完处理程序后,为了后续的请求而更新响应缓存时执行。

    Application_EndRequest:同上,EndRequest是在响应Request时最后一个触发的事件,这个方法自然就是最后一个执行的了。

    再说这两个无顺序的

    Application_PreSendRequestHeaders:向客户端发送Http标头之前执行。

    Application_PreSendRequestContent:向客户端发送Http正文之前执行

    protected void Application_AcquireRequestState(Object sender, EventArgs e)
       {
        string url=Request.Url.ToString();
        if(url.IndexOf("login.aspx")<0)
        {
         string lg=(string)Session["aa"];
         if(lg==null||lg=="")
          Response.Write("<script>window.top.location.href='login.aspx'</script>");
        }
       }


  • 相关阅读:
    win7下的vxworks总结
    ubuntu 无法获得锁 /var/lib/dpkg/lock
    项目中用到了的一些批处理文件
    win7下安装 WINDRIVER.TORNADO.V2.2.FOR.ARM
    使用opencv统计视频库的总时长
    January 05th, 2018 Week 01st Friday
    January 04th, 2018 Week 01st Thursday
    January 03rd, 2018 Week 01st Wednesday
    January 02nd, 2018 Week 01st Tuesday
    January 01st, 2018 Week 01st Monday
  • 原文地址:https://www.cnblogs.com/anchenjie007/p/1083273.html
Copyright © 2020-2023  润新知