zoukankan      html  css  js  c++  java
  • Asp.Net HttpApplication 事件汇总

    Global.asax 文件,有时候叫做 ASP.NET 应用程序文件,提供了一种在一个中心位置响应应用程序级或模块级事件的方法。你可以使用这个文件实现应用程序安全性以及其它一些任务。下面让我们详细看一下如何在应用程序开发工作中使用这个文件。

    概述
        Global.asax 位 于应用程序根目录下。虽然 Visual Studio .NET 会自动插入这个文件到所有的 ASP.NET 项目中,但是它实际上是一个可选文件。 删除它不会出问题——当然是在你没有使用它的情况下。.asax 文件扩展名指出它是一个应用程序文件,而不是一个使 用 aspx 的 ASP.NET 文件。
        Global.asax 文件被配置为任何(通过 URL 的)直接 HTTP 请求都被自动 拒绝,所以用户不能下载或查看其内容。ASP.NET 页面框架能够自动识别出对Global.asax 文件所做的任何更改。 在 Global.asax 被更改后ASP.NET 页面框架会重新启动应用程序,包括关闭所有的浏览器会话,去除所有状态信息,并重新启动应用程序 域。

      HttpApplication的19个标准事件如下:

    事件名称 说明
    BeginRequest Asp.net处理的第一个事件,表示处理的开始
    AuthenticateRequest 验证请求,一般用来取得请求用户的信息
    PostAuthenticateRequest 已经获取请求用户的信息
    AuthorizeRequest 授权,一般用来检查用户的请求是否获得权限
    PostAuthorizeRequest 用户请求已经得到授权
    ResolveRequestCache 获取以前处理缓存的处理结果,如果以前缓存过,那么,不必再进行请求的处理工作,直接返回缓存结果
    PostResolveRequestCache 已经完成缓存的获取操作
    PostMapRequestHandler 已经根据用户的请求,创建了处理请求的处理器对象
    AcquireRequestState 取得请求的状态,一般用于Session
    PostAcquireRequestState 已经取得了Session
    PreRequestHandlerExecute 准备执行处理程序
    PostRequestHandlerExecute 已经执行了处理程序
    ReleaseRequestState 释放请求的状态
    PostReleaseRequestState 已经释放了请求的状态
    UpdateRequestCache 更新缓存
    PostUpdateRequestCache 已经更新了缓存
    LogRequest 请求的日志操作
    PostLogRequest 已经完成了请求的日志操作
    EndRequest 本次请求处理完成


    编程
        Global.asax 文件继承自HttpApplication 类,它维护一个HttpApplication 对象池,并在需要时将对象池中的对象分配给应用程序。Global.asax 文件包含以下事件:
             Application_Init:在应用程序被实例化或第一次被调用时,该事件被触发。对于所有的HttpApplication 对象实例,它都会被调用。
             Application_Disposed:在应用程序被销毁之前触发。这是清除以前所用资源的理想位置。
             Application_Error:当应用程序中遇到一个未处理的异常时,该事件被触发。
             Application_Start:在HttpApplication 类的第一个实例被创建时,该事件被触发。它允许你创建可以由所有HttpApplication 实例访问的对象。
             Application_End:在HttpApplication 类的最后一个实例被销毁时,该事件被触发。在一个应用程序的生命周期内它只被触发一次。
             Application_BeginRequest:在接收到一个应用程序请求时触发。对于一个请求来说,它是第一个被触发的事件,请求一般是用户输入的一个页面请求(URL)。
             Application_EndRequest:针对应用程序请求的最后一个事件。
             Application_PreRequestHandlerExecute:在 ASP.NET 页面框架开始执行诸如页面或 Web 服务之类的事件处理程序之前,该事件被触发。
             Application_PostRequestHandlerExecute:在 ASP.NET 页面框架结束执行一个事件处理程序时,该事件被触发。
             Applcation_PreSendRequestHeaders:在 ASP.NET 页面框架发送 HTTP 头给请求客户(浏览器)时,该事件被触发。
             Application_PreSendRequestContent:在 ASP.NET 页面框架发送内容给请求客户(浏览器)时,该事件被触发。
             Application_AcquireRequestState:在 ASP.NET 页面框架得到与当前请求相关的当前状态(Session 状态)时,该事件被触发。
             Application_ReleaseRequestState:在 ASP.NET 页面框架执行完所有的事件处理程序时,该事件被触发。这将导致所有的状态模块保存它们当前的状态数据。
             Application_ResolveRequestCache:在 ASP.NET 页面框架完成一个授权请求时,该事件被触发。它允许缓存模块从缓存中为请求提供服务,从而绕过事件处理程序的执行。
             Application_UpdateRequestCache:在 ASP.NET 页面框架完成事件处理程序的执行时,该事件被触发,从而使缓存模块存储响应数据,以供响应后续的请求时使用。
             Application_AuthenticateRequest:在安全模块建立起当前用户的有效的身份时,该事件被触发。在这个时候,用户的凭据将会被验证。
             Application_AuthorizeRequest:当安全模块确认一个用户可以访问资源之后,该事件被触发。
             Session_Start:在一个新用户访问应用程序 Web 站点时,该事件被触发。

             Session_End:在一个用户的会话超时、结束或他们离开应用程序 Web 站点时,该事件被触发。
           Application_Error 事件显示一个简单的消息用以说明发生的错误。

       这个事件列表看起来好像多得吓人,但是在不同环境下这些事件可能会非常有用。使用这些事件的一个关键问题是知道它们被触发的顺序。

    Application_Init 和Application_Start 事件在应用程序第一次启动 时被触发一次相似地,Application_Disposed 和 Application_End 事件在应用程序终止时被触发一次。

    此外,基于会 话的事件(Session_Start 和 Session_End)只在用户进入和离开站点时被使用。

    其余的事件则处理应用程序请求,这些事件被触发的 顺序是:
             Application_BeginRequest
             Application_AuthenticateRequest
             Application_AuthorizeRequest
             Application_ResolveRequestCache
             Application_AcquireRequestState
             Application_PreRequestHandlerExecute
             Application_PreSendRequestHeaders
             Application_PreSendRequestContent
            <<执行代码>>
             Application_PostRequestHandlerExecute
             Application_ReleaseRequestState
             Application_UpdateRequestCache
             Application_EndRequest

        这些事件常被用于安全性方面。

    更多:

    Asp.Net HttpApplication请求管道与Session(一)

    Asp.Net HttpApplication请求管道与Session(二)

  • 相关阅读:
    MVC4中常用的短句及配置归结(部分)
    结合EF5.0讲MVC4(四)将我们的程序改成数据库优先模式
    结合EF5.0讲MVC4(二)为先前程序添加查询及主外键关系
    【译】《Pro ASP.NET MVC4 4th Edition》第二章(一)
    XtraReport应用(1)(XtraReport From File)
    结合EF5.0讲MVC4(一)创建一个MVC4应用程序
    Scrum实际应用(一)
    结合EF5.0讲MVC4(三)为我们的程序添加过滤器
    C# LINQ详解(一)
    如何在 Windows Server 2008 上打开 SQL Server 防火墙端口
  • 原文地址:https://www.cnblogs.com/tianma3798/p/4977286.html
Copyright © 2011-2022 走看看