web-dev-qa-db-ja.com

Global.asaxでApplication_StartとInitを使用する場合

_Global.asax_ファイルのApplication_Start() vs Init()にアプリケーション初期化コードを配置する必要があるのはどのような状況ですか?

この2つの違いは、_Application_start_が最初に呼び出され、次にInit()が呼び出されることを除いて、私にはあまり明白ではないようです。

  • なぜ私は一方をもう一方の上に使用するのですか?
  • 本当に違いがありますか?
  • 2つのイベント間でアプリケーションの状態にどのような変化がありますか?

これまでのところ私が見つけることができる唯一の本当のポインターはIHttpModuleInit()メソッドしか持っていないということですので、私がやっていることが何らかの時点でIHttpModuleを実装するのにより適している場合は、Init() _Global.asax_のメソッド、一貫性のために他に何もない場合。

74
roryf

MSDNドキュメント から:

Application_StartおよびApplication_Endメソッドは、HttpApplicationイベントを表さない特別なメソッドです。 ASP.NET 各HttpApplicationインスタンスではなく、アプリケーションドメインの有効期間中に一度呼び出します

初期化:

すべてのモジュールが作成された後にHttpApplicationのすべてのインスタンスに対して1回クラスが呼び出されます。

更新:特定のコードがアプリで1回だけ呼び出されることを確認する必要がある場合。ライフサイクル、Application_Startはより良いソリューションです。例:log4netの構成?

84
Igor Brejc

はい

それらの間には違いがあります。 Application_Start()イベントは1回だけ呼び出されますが、Init()メソッドはアプリケーションのインスタンスが作成されるたびに呼び出されます。

11
Abid Mahmood