2012-04-21 3 views
1

MVC 3 WebアプリケーションでMvcApplicationがシングルトンですか?なぜ3つのインスタンスが見つかりましたか?ASP.MVC3:デバッグ時に3つのMvcApplicationインスタンスがありますか?

私のステップ:(VS2010 SP1 + ASP.NET MVC 3つのツールのアップデート)(口座サンプル付き)

  1. デフォルトを作成し、インターネットMVC 3 Appliction
  2. がグローバルにMvcApplication()コンストラクタを追加します。 asaxは、と私はコンストラクタが3回呼ばれた見つけ

デバッグすること

  • F5キーを押して中にブレークポイントを設定します!

    敬具、磨き

    @

    ザック===編集===

    訂正:

    2例、3が1つのWebアプリを発見されたではありません。 慎重にチェックしたところ、ソリューションに2つのWebアプリケーションが含まれていることが判明しました。そのうちの1つを削除した後、左側のアプリケーションで2つのインスタンスが見つかりました。ここで

    ログ(数字はMvcApplicationインスタンスハッシュコードされている)に示すよう

    MvcApplication(): 41516761 
    Application_Start(): 41516761 
    MvcApplication(): 56552081 
    Application_AuthenticateRequest(): 56552081 
    Application_AuthenticateRequest(): 56552081 
    Application_AuthenticateRequest(): 56552081 
    MvcApplication_Disposed(): 56552081 
    Application_End(): 41516761 
    

    で、1つのインスタンスを起動し、終了イベントを処理するために使用され、そしてもう一方は、要求を処理するために使用されています。

  • 答えて

    1

    MvcApplicationは、以下のasp.netパイプラインを理解するには絶好のリンクがあり、通常のasp.netからのHttpApplicationから継承されます。私は記事から関連するセクションをコピーしました。要するに

    - 何MvcApplicationはシングルトンではないではありませんが、各要求にしか1存在があります。

    http://www.west-wind.com/presentations/howaspnetworks/howaspnetworks.asp

    各要求はのHttpApplicationオブジェクトにルーティングされます。 HttpApplicationFactoryクラスのHttpApplicationのプールは、アプリケーション と手アウト各着信要求のための参照を上の負荷に応じて、ASP.NETアプリケーションのための オブジェクトが作成されます。 プールのサイズは、デフォルトでは、プール がが少ない数で始まり20で のmachine.configののprocessModelキーに設定MaxWorkerThreadsの設定に制限されています。通常は1つで、複数のシミュレート要求を処理する必要があるため、 になります。負荷の下で、それはインスタンスのその最大数、負荷が低下すると、後で少ない数に戻ってスケーリングされ に成長する可能ので、プールは が監視されています。 のHttpApplicationは、特定のWeb アプリケーションのための外側の容器であり、Global.asaxの中で定義されたクラスにマッピングされます。 これは、アプリケーションで実際に と表示されるHTTPランタイムの最初のエントリポイントです。あなたがグローバルを見るなら。 (またはクラスの背後にあるコード)asaxあなたはこのクラスはのHttpApplicationから直接 を導き出すことがわかります:

    +0

    おかげます、マイケル。 – Zach

    関連する問題