8

Asp.Netページのライフサイクルに関する美しい記事http://www.codeproject.com/Articles/73728/ASP-NET-Application-and-Page-Life-Cycleを読みました。

私の理解では、リクエストはMODULE(BeginRequest、authentica、author、prehandler ...)HANDLER(Proccessrequest)PAGE(Init、viewstate、load、render、......、unload)MODULE(Posthandler、postrequescache、Endreques)を通過します)。

Global.asax(Application_start、Application_begin、....)は、上記のフローのどこに正確に含まれますか?これに関する明確さは本当に役立ちます

Init関数はfirstまたはGlobal.asax関数と呼ばれますか?

貴重なお時間をいただきありがとうございます。

4

3 に答える 3

13

IIS の ASP.NET アプリケーションは、下の図のように構成されています。見た目は怖いかもしれませんが、名前は聞き覚えがあるはずです。おなじみの名前がもう少し消化しやすいものになることを願っています.

以下に示す構造を言葉で焼き直すつもりはありません。写真は、私が文章で言うよりも優れた仕事をしています。代わりに、画像があなたの質問に与える影響にすぐに飛びつきます.

怖いもの

アプリ ドメイン アプリ ドメイン
とは これは、アプリケーション用のシステム メモリのプライベートな割り当てです。ドメイン内のすべてのコードは、割り当てられたドメイン メモリを使用します。これは、静的な型と参照がドメイン内で共有されることを意味します。ドメイン外のコードは、このドメインのメモリにアクセスできません。

すべてのASP.NET アプリケーションは、それが属する各アプリ プールのアプリ ドメイン内で実行されます。この 1 対 1 の関係は、アプリケーション プール内のスレッド数に関係なく当てはまります。

Global.asax Global.asax
とは何ですか? 最も単純なのは、 System.Web.HttpApplicationから継承する .NET クラスです。HttpApplicationは、Global.asax に、要求パイプラインを介してすべての HTTP 要求を誘導するスマートを提供します。すべてのリクエスト ライフサイクル イベントを起動し、ハンドラーで ProcessRequest を呼び出します。

ASP.NET アプリケーションは、 HttpApplication (Global.asax)の複数のインスタンスを作成します。リクエストが受信されると、 HttpApplicationインスタンスの 1 つに渡されます。その後、リクエストはその存続期間中、同じHttpApplicationインスタンスにとどまります。これは、処理されるリクエストごとに1 つのHttpApplicationインスタンスがあることを意味します。すべてのHttpApplicationインスタンスは、その存続期間中に多くのリクエストを処理するために再利用できます。

アプリケーション イベント Application_Start などのアプリケーションイベント
はどこで結び付けられますか? これらのイベントの一部は App Domain を参照し、一部はHttpApplicationを参照するため、状況によって異なります。Application_Start と Application_End は、アプリ ドメインの開始と終了を参照します。残りのアプリケーション イベント (Application_Begin など) は、HttpApplicationインスタンスのライフサイクルを参照します。

詳細情報詳細については MSDN の記事と MSDN以外の記事をお
勧めします

于 2013-07-03T14:41:05.507 に答える
1

asp.net アプリケーション ライフ サイクル イベントは、global.asax に注意を払います。ページのライフサイクルには独自のイベントがあります。ここでもっと読む:

http://msdn.microsoft.com/en-us/library/ms178473.aspx

于 2012-11-11T13:35:27.627 に答える
1

HTTP モジュールと Global.asax ファイル

モジュールの多くの機能をアプリケーションの Global.asax ファイルに実装できます。これにより、アプリケーション イベントに応答できます。ただし、モジュールはカプセル化されており、一度作成すればさまざまなアプリケーションで使用できるという点で、Global.asax ファイルよりも優れています。これらをグローバル アセンブリ キャッシュ (GAC) に追加し、Machine.config ファイルに登録することで、アプリケーション間で再利用できます。詳細については、「グローバル アセンブリ キャッシュ」を参照してください。ただし、Global.asax ファイルを使用する利点は、Session_Start メソッドや Session_End メソッドなど、他の登録済みモジュール イベントにコードを配置できることです。さらに、Global.asax ファイルを使用すると、アプリケーション全体で使用できるグローバル オブジェクトをインスタンス化できます。アプリケーション イベントに依存するコードを作成する必要があり、そのモジュールを他のアプリケーションで再利用するか、Global.asax ファイルに複雑なコードを配置したくない場合は、常にモジュールを使用する必要があります。アプリケーション イベントに依存するコードを作成する必要があり、それをアプリケーション間で再利用する必要がない場合、またはモジュールで使用できない Session_Start などのイベントをサブスクライブする必要がある場合は、コードを Global.asax ファイルに配置する必要があります。

HTTP モジュールの概要

于 2017-02-06T07:59:32.503 に答える