3

私がASP.NET MVC 4.0取り組んでいるプロジェクトがあり、デフォルトではglobal.asaxファイルが次のようになっていることに気付きました...

namespace Application1.Web {
    // Note: For instructions on enabling IIS6 or IIS7 classic mode, 
    // visit http://go.microsoft.com/?LinkId=9394801
    public class MvcApplication : System.Web.HttpApplication {
        protected void Application_Start() {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
    }
}

Application_Startこれをコンストラクターに入れるだけでなく、使用したい特定の理由はありますか? 私は無意識のうちに両方の方法でそれを行いましたが、どちらでも問題を経験したことはありません.

この質問は、問題を解決することを目的としておらず、単に私が不足している情報を取得することを目的としています. 冗長でしたら、申し訳ありません。

4

1 に答える 1

3

他の誰かがより詳細な回答を提供できるかもしれませんが、Begin_Requestリクエストごとに実行されるメソッドなどがあります。 Session_Start各ユーザー セッションの開始時に実行されます。

ただし、Application_Start一度しか実行されないため、スレッドセーフです。これらの呼び出しをコンストラクターに移動すると、そのオブジェクトはリクエストごとにインスタンス化されるため、これらのメソッドはリクエストごとに実行されます。

ASP.NET アプリケーション ライフサイクル ページのスニペットを次に示します。

すべてのコア アプリケーション オブジェクトが初期化された後、アプリケーションは HttpApplication クラスのインスタンスを作成することによって開始されます。アプリケーションに Global.asax ファイルがある場合、ASP.NET は代わりに、HttpApplication クラスから派生した Global.asax クラスのインスタンスを作成し、派生クラスを使用してアプリケーションを表します

于 2012-10-12T18:05:30.910 に答える