web-dev-qa-db-ja.com

HTTPModuleイベントの実行順序?

誰かがサイトまたはページを知っていますか、HTTPModuleイベントを実行するためのHTTPApplicationクラスのイベントの実行順序を知っていますか?

すべてのイベントで MSDN Documentation を見つけましたが、プロセスステップのリストが表示されず、見つけることができませんでした。

59
Adron

たぶんこれは役立ちます

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

次のイベントは、モジュールがリクエスト送信ごとに同期するために利用可能です。これらのイベントの順序は非決定的です。

  • PreSendRequestHeaders
  • PreSendRequestContent
  • エラー

詳細については、記事を参照してください。

78
Jader Dias

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イベントを発生させます。

注:MapRequestHandler、LogRequest、およびPostLogRequestイベントは、アプリケーションがIIS 7.0および.NET Framework 3.0以降で統合モードで実行されている場合にのみサポートされます。

50
Michael Liu

HttpmoduleのPreSendRequestContentイベントでキャッシュするためのメソッドを呼び出したい。問題は、アプリケーションにクライアントの要件ごとに追加されたWebヘッダーとフッターがあり、そのコンテンツイメージ、javascript、cssをキャッシュできないことです。現在、httpmoduleのReleaseRequestStateメソッドを使用しています。

0
bhaumik pandit

受け入れられた答えは古くなっています。 ドキュメント に従って発生したイベントのリストを次に示します。

  1. BeginRequest

  2. AuthenticateRequest

  3. PostAuthenticateRequest

  4. AuthorizeRequest

  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. LogRequest

  18. PostLogRequest

  19. EndRequest

0
Lews Therin