「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>ASP.NET]]

* 目次 [#fb580b25]
#contents

*概要 [#k90f9aad]

* [#ccb6da19]
*ライフサイクルとイベント発生順序 [#x6b0fbdf]

**ライフサイクル [#kac2a827]
***HttpApplication(Global.asax)、HttpModule [#s4cd94aa]
-同時実行数に合わせてインスタンス化される。
-リクエスト-レスポンス間は専有する(メンバはスレッドセーフ)。
-インスタンス化されたオブジェクトは複数ユーザ間で使いまわされる。

-参考
--[INFO] ASP.NET のアプリケーション インスタンス、アプリケーション イベント、およびアプリケーション状態~
https://support.microsoft.com/ja-jp/help/312607/info-application-instances--application-events--and-application-state

***HttpHandler [#ae794ab7]
-リクエストの都度、IHttpHandlerFactoryによって、HttpHandlerをインスタンス化。
-<httpHandlers>の定義に従って、拡張子やGET,POSTなどに応じて適切なHttpHandlerをインスタンス化。

**イベント発生順序 [#y5a64f74]
★は初回のみ。

***全体の初期処理 [#e3028dc0]
-Global.Application_Start ★
-IHTTPModule
--Constructor ★
--IHTTPModule.Init ★

***リクエストの開始処理 [#a90467bf]
-BeginRequest
--Global.BeginRequest
--IHTTPModule.BeginRequest
--Global.Application_BeginRequest

-Global.DefaultAuthentication

-AuthenticateRequest
--Global.AuthenticateRequest
--IHTTPModule.AuthenticateRequest
--Global.Application_AuthenticateRequest

-PostAuthenticateRequest
--Global.PostAuthenticateRequest
--IHTTPModule.PostAuthenticateRequest

-AuthorizeRequest
--Global.AuthorizeRequest
--IHTTPModule.AuthorizeRequest

-PostAuthorizeRequest
--Global.PostAuthorizeRequest
--IHTTPModule.PostAuthorizeRequest

-ResolveRequestCache
--Global.ResolveRequestCache
--IHTTPModule.ResolveRequestCache

-PostResolveRequestCache
--Global.PostResolveRequestCache
--IHTTPModule.PostResolveRequestCache

-Page.Constructor

-PostMapRequestHandler
--Global.PostMapRequestHandler
--IHTTPModule.PostMapRequestHandler

-Global.Session_Start ★

-AcquireRequestState
--Global.AcquireRequestState
--IHTTPModule.AcquireRequestState

-PostAcquireRequestState
--Global.PostAcquireRequestState
--IHTTPModule.PostAcquireRequestState

-PreRequestHandlerExecute
--Global.PreRequestHandlerExecute
--IHTTPModule.PreRequestHandlerExecute

***ページの開始処理 [#ed22d61a]
-Page.PreInit

-MasterPage.Constructor

-Init
--MasterPage.ContentPlaceHolder
--MasterPage
--Page

-Page
--InitComplete
--PreLoad

-Load
--Page
--MasterPage
--MasterPage.ContentPlaceHolder

-Page
--Page.LoadComplete

***ページの終了処理 [#z1fda17a]
-PreRender
--Page
--MasterPage
--MasterPage.ContentPlaceHolder

-Page
--PreRenderComplete
--SaveStateComplete

-Unload
--MasterPage.ContentPlaceHolder
--MasterPage
--Page

***リクエストの終了処理 [#b2c3e5d7]
-PostRequestHandlerExecute
--Global.PostRequestHandlerExecute
--IHTTPModule.PostRequestHandlerExecute

-ReleaseRequestState
--Global.ReleaseRequestState
--IHTTPModule.ReleaseRequestState

-PostReleaseRequestState
--Global.PostReleaseRequestState
--IHTTPModule.PostReleaseRequestState

-UpdateRequestCache
--Global.UpdateRequestCache
--IHTTPModule.UpdateRequestCache

-PostUpdateRequestCache
--Global.PostUpdateRequestCache
--IHTTPModule.PostUpdateRequestCache

-EndRequest
--Global.EndRequest
--IHTTPModule.EndRequest

-PreSendRequestHeaders
--Global.PreSendRequestHeaders
--IHTTPModule.PreSendRequestHeaders

-PreSendRequestContent
--Global.PreSendRequestContent
--IHTTPModule.PreSendRequestContent

***全体の終了処理 [#z3bcd6bb]
-Global.Session_End ★
-IHTTPModule.Dispose ★
-Global.Application_End ★

**参考 [#b5694965]
-ASP.NETのライフサイクルの仕組み~
http://article.higlabo.com/ja/asp_net_life_cycle.html
-ASP.NET のイベント発生順序 – MiYABiS note.~
http://note.miyabis.jp/2009/11/33503965.html
-ASP.NETのライフサイクルの仕組み~
http://article.higlabo.com/ja/asp_net_life_cycle.html

*参考 [#scbb35e8]
-Visual C# .NET を使用して ASP.NET HTTP モジュールを作成する方法~
https://support.microsoft.com/ja-jp/help/307996/how-to-create-an-asp-net-http-module-using-visual-c--net
*主要なイベントの説明 [#abc2a6da]
|#|イベント|説明|
|1|BeginRequest|リクエストを受信して最初に発生|
|2|AuthenticateRequest|ASP.NETがユーザの認証処理の準備が完了したときに発生|
|3|PostAuthenticateRequest|Post|
|4|AuthorizeRequest|権限の承認処理の準備が完了したときに発生|
|5|PostAuthorizeRequest|Post|
|6|ResolveRequestCache|リクエストに対してキャッシュからレスポンスを生成するのかレスポンスを1から生成するのかを決定する|
|7|PostResolveRequestCache|Post|
|8|PostMapRequestHandler|現在の要求を適切なイベント ハンドラにマップすると発生|
|9|AcquireRequestState|セッション変数の準備処理|
|10|PostAcquireRequestState|Post|
|11|PreRequestHandlerExecute|各ハンドラ実行直前に発生|
|12|PostRequestHandlerExecute|各ハンドラ実行直後に発生|
|13|ReleaserequestState|セッション変数などの値を更新・保存する|
|14|PostReleaseRequestState|Post|
|15|UpdateRequestCache|リクエストキャッシュの更新処理を行う|
|16|PostUpdateRequestCache|Post|
|17|EndRequest|クライアントのブラウザへデータを送信する直前に発生|
|18|PreSendRequestHeaders|HTTP ヘッダーをクライアントに送信する直前に発生|
|19|PreSendRequestContent|コンテンツをクライアントに送信する直前に発生|

*書き換え [#q8503f50]

-ブログ表示(3) -クラスライブラリ | ++C++; // 未確認飛行 C~
http://ufcpp.net/study/dotnet/aspx/blog3/

**URL [#occ44c06]
HttpHandlerでも可能のようだが、HttpModuleを使うことが多い模様。

-URL書き換え(Rewriting)を行う - Netplanetes~
http://www.pine4.net/Memo/Article/Archives/11
-ブログ表示(3) -クラスライブラリ | ++C++; // 未確認飛行 C~
http://ufcpp.net/study/dotnet/aspx/blog3/

**ResponseBody [#ld452c0e]
-HttpRequestのパラメータに小細工をしたい時にどうするか(・ω・)? -うさ☆うさ日記~
http://d.hatena.ne.jp/machi_pon/20091203/1259842545

**ResponseHeader [#ca190294]
-IIS7 の機能を拡張してみる-レスポンスヘッダー内のサーバー名の改ざん – monoe's blog~
https://blogs.msdn.microsoft.com/osamum/2010/04/05/iis7-2/
- IIS 7/7.5 で不要なHTTPレスポンスヘッダーを削除 « Fukui Labs~
http://blog.progfast.jp/labs/index.php/arts/iis-7-httpresponseheader/

*参考 [#scbb35e8]
-[INFO] ASP.NET の HTTP モジュールと HTTP ハンドラの概要~
https://support.microsoft.com/ja-jp/help/307985/info-asp-net-http-modules-and-http-handlers-overview
-Visual C# .NET を使用して ASP.NET HTTP モジュールを作成する方法~
https://support.microsoft.com/ja-jp/help/307996/how-to-create-an-asp-net-http-module-using-visual-c--net

----
Tags: [[:.NET開発]], [[:ASP.NET]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS