【问题标题】:HTTPModule Event Execution Order?HTTPModule 事件执行顺序?
【发布时间】:2010-10-01 06:47:35
【问题描述】:

有谁知道站点或页面,或者知道 HTTPModule 事件执行的 HTTPApplication 类事件的执行顺序吗?

我找到了所有事件的 MSDN Documentation,但它没有显示流程步骤列表,我也找不到。

【问题讨论】:

    标签: asp.net httpmodule httpapplication


    【解决方案1】:

    也许这有帮助

    http://support.microsoft.com/kb/307985/en-us/

    HttpApplication 类提供了许多模块可以与之同步的事件。以下事件可供模块在每个请求上同步。这些事件按顺序列出:

    1. 开始请求
    2. 验证请求
    3. 授权请求
    4. 解决请求缓存
    5. 获取请求状态
    6. PreRequestHandlerExecute
    7. PostRequestHandlerExecute
    8. ReleaseRequestState
    9. UpdateRequestCache
    10. 结束请求

    以下事件可用于模块同步每个请求传输。这些事件的顺序是不确定的。

    • PreSendRequestHeaders
    • PreSendRequestContent
    • 错误

    有关完整信息,请参阅文章。

    【讨论】:

      【解决方案2】:

      MSDN 库文档:

      以下是 ASP.NET 4.0 请求管道中的事件(粗体)和其他步骤:

      1. 验证请求,该请求检查浏览器发送的信息并确定它是否包含潜在的恶意标记。
      2. 如果在 Web.config 文件的 UrlMappingsSection 部分中配置了任何 URL,则执行 URL 映射。
      3. 引发 BeginRequest 事件。
      4. 引发 AuthenticateRequest 事件。
      5. 引发 PostAuthenticateRequest 事件。
      6. 引发 AuthorizeRequest 事件。
      7. 引发 PostAuthorizeRequest 事件。
      8. 引发 ResolveRequestCache 事件。
      9. 引发 PostResolveRequestCache 事件。
      10. [IIS 5.0/6.0] 根据请求资源的文件扩展名(映射在应用程序的配置文件中),选择一个实现IHttpHandler的类来处理请求。如果请求是针对从 Page 类派生的对象(页面)并且需要编译页面,则 ASP.NET 在创建页面实例之前编译页面。 [IIS 7.0] 引发 MapRequestHandler 事件。根据所请求资源的文件扩展名选择适当的处理程序。处理程序可以是本机代码模块,例如 IIS 7.0 StaticFileModule,也可以是托管代码模块,例如 PageHandlerFactory 类(处理 .aspx 文件)。
      11. 引发 PostMapRequestHandler 事件。
      12. 引发 AcquireRequestState 事件。
      13. 引发 PostAcquireRequestState 事件。
      14. 引发 PreRequestHandlerExecute 事件。
      15. 为请求调用相应 IHttpHandler 类的 ProcessRequest 方法(或异步版本 IHttpAsyncHandler.BeginProcessRequest)。例如,如果请求是针对某个页面的,则当前页面实例会处理该请求。
      16. 引发 PostRequestHandlerExecute 事件。
      17. 引发 ReleaseRequestState 事件。
      18. 引发 PostReleaseRequestState 事件。
      19. 如果定义了 Filter 属性,则执行响应过滤。
      20. 引发 UpdateRequestCache 事件。
      21. 引发 PostUpdateRequestCache 事件。
      22. [IIS 7.0] 引发 LogRequest 事件。
      23. [IIS 7.0] 引发 PostLogRequest 事件。
      24. 引发 EndRequest 事件。
      25. 引发 PreSendRequestHeaders 事件。
      26. 引发 PreSendRequestContent 事件。

      注意:仅当应用程序在 IIS 7.0 和 .NET Framework 3.0 或更高版本中以集成模式运行时,才支持 MapRequestHandler、LogRequest 和 PostLogRequest 事件。

      【讨论】:

        【解决方案3】:

        接受的答案已过时。以下是根据the documentation 引发的事件列表:

        1. 开始请求

        2. AuthenticateRequest

        3. PostAuthenticateRequest

        4. 授权请求

        5. PostAuthorizeRequest

        6. ResolveRequestCache

        7. PostResolveRequestCache

          在 PostResolveRequestCache 事件之后和 PostMapRequestHandler 事件之前,会创建一个事件处理程序(即与请求 URL 对应的页面)。当服务器以集成模式运行 IIS 7.0 并且至少运行 .NET Framework 3.0 版时,会引发 MapRequestHandler 事件。当服务器在经典模式下运行 IIS 7.0 或更早版本的 IIS 时,无法处理此事件。

        8. PostMapRequestHandler

        9. AcquireRequestState

        10. PostAcquireRequestState

        11. PreRequestHandlerExecute

        12. PostRequestHandlerExecute

        13. ReleaseRequestState

        14. PostReleaseRequestState

        15. UpdateRequestCache

        16. PostUpdateRequestCache

        17. 日志请求

        18. PostLogRequest

        19. 结束请求

        【讨论】:

          猜你喜欢
          • 2011-07-16
          • 1970-01-01
          • 1970-01-01
          • 2021-11-20
          • 1970-01-01
          • 2011-10-27
          • 2012-06-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多