HTTPModule事件执行命令?

时间:2009-01-14 00:13:01

标签: asp.net httpmodule httpapplication

有没有人知道某个站点或页面,或者知道HTTPAppodule事件执行的HTTPApplication类事件的执行顺序?

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

3 个答案:

答案 0 :(得分:78)

也许这有帮助

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

  

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

  1. 的BeginRequest
  2. AuthenticateRequest
  3. 的AuthorizeRequest
  4. ResolveRequestCache
  5. 的AcquireRequestState
  6. 的PreRequestHandlerExecute
  7. PostRequestHandlerExecute
  8. ReleaseRequestState
  9. 的UpdateRequestCache
  10. EndRequest
  11.   

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

    • PreSendRequestHeaders
    • PreSendRequestContent
    • 错误

    请参阅文章了解完整信息。

答案 1 :(得分:50)

MSDN Library文档:

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

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

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

答案 2 :(得分:0)

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

  
      
  1. BeginRequest

  2.   
  3. AuthenticateRequest

  4.   
  5. PostAuthenticateRequest

  6.   
  7. AuthorizeRequest

  8.   
  9. PostAuthorizeRequest

  10.   
  11. ResolveRequestCache

  12.   
  13. PostResolveRequestCache

         

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

  14.   
  15. PostMapRequestHandler

  16.   
  17. AcquireRequestState

  18.   
  19. PostAcquireRequestState

  20.   
  21. PreRequestHandlerExecute

  22.   
  23. PostRequestHandlerExecute

  24.   
  25. ReleaseRequestState

  26.   
  27. PostReleaseRequestState

  28.   
  29. UpdateRequestCache

  30.   
  31. PostUpdateRequestCache

  32.   
  33. LogRequest

  34.   
  35. PostLogRequest

  36.   
  37. EndRequest

  38.