web-dev-qa-db-ja.com

App_StartフォルダーASP 4.5はWebApplicationsプロジェクトのみですか?

。NET 4.5に変換したWebサイトプロジェクトがあります。 App_Startディレクトリに追加したAuthConfigを使用したいと思います。いくつかの質問。

App_StartディレクトリはWebアプリケーションプロジェクトでのみ使用できますか?、既存のasp.netフォルダーを追加しようとすると、追加するオプションとして表示されません。

第二に、もしそうなら私のウェブサイトプロジェクトのどこにでもAuthConfigファイルだけでいいですか?

28
TreK

App_Startフォルダーは、MVC4テンプレートの一部として導入されました。慣例によりコードが実行される原因となる特別なものはありません。たとえば、HotTowel SPAテンプレートは、App_Startフォルダーに次を作成します。

TODO diagram

App_Startのコードは、以下に示すようにglobal.asax.csによって実行されます。

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

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

App_Startについて特別なことはありません。これは単なるフォルダーです。特別なのは、それがどのように使用されるかであり、それはインストール可能なNuGetパッケージであるWebActivatorフレームワークに固有のものです。 App_StartとWebActivatorは.NET 4.5に固有のものではありませんが、.net 4(VS 2010または2012を意味します)が必要です

http://blog.davidebbo.com/2011/02/appstart-folder-convention-for-nuget.html を参照してください

19

App_Startについて特別なものはありません ですが、アプリケーションがApplication_Start内部Global.asax。私は私のプロジェクトで Ninject 依存関係インジェクターを使用していますApp_Startフォルダ。私のプロジェクトにはGlobal.asaxファイルがありません:

enter image description here

ただし、NinjectWebCommonファイルに設定したすべての構成は、アプリケーションの起動時に実行されます。 NinjectWebCommonのコンテンツは次のとおりです。

using WebFormNinject.Models;

[Assembly: WebActivator.PreApplicationStartMethod(typeof(WebFormNinject.App_Start.NinjectWebCommon), "Start")]
[Assembly: WebActivator.ApplicationShutdownMethodAttribute(typeof(WebFormNinject.App_Start.NinjectWebCommon), "Stop")]

namespace WebFormNinject.App_Start
{
    using System;
    using System.Web;

    using Microsoft.Web.Infrastructure.DynamicModuleHelper;

    using Ninject;
    using Ninject.Web.Common;

    public static class NinjectWebCommon 
    {
        private static readonly Bootstrapper bootstrapper = new Bootstrapper();

        /// <summary>
        /// Starts the application
        /// </summary>
        public static void Start() 
        {
            DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
            DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
            bootstrapper.Initialize(CreateKernel);
        }

        /// <summary>
        /// Stops the application.
        /// </summary>
        public static void Stop()
        {
            bootstrapper.ShutDown();
        }

        /// <summary>
        /// Creates the kernel that will manage your application.
        /// </summary>
        /// <returns>The created kernel.</returns>
        private static IKernel CreateKernel()
        {
            var kernel = new StandardKernel();
            kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
            kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();

            RegisterServices(kernel);
            return kernel;
        }

        /// <summary>
        /// Load your modules or register your services here!
        /// </summary>
        /// <param name="kernel">The kernel.</param>
        private static void RegisterServices(IKernel kernel)
        {
            kernel.Bind<IDisplay>().To<MockDisplay>();
        }        
    }
}

RegisterServices関数が実行される場所に興味がありました!次に、このコードのセクションに気付きました:

[Assembly: WebActivator.PreApplicationStartMethod(typeof(WebFormNinject.App_Start.NinjectWebCommon), "Start")]
[Assembly: WebActivator.ApplicationShutdownMethodAttribute(typeof(WebFormNinject.App_Start.NinjectWebCommon), "Stop")]

これらの属性により、Startメソッドがアプリケーションの起動時に実行されます。詳細については、 WebActivator/PreApplicationStartMethod をご覧ください。

12

要するに:ASP.NET 4.5 Webサイトの構成の変更をより深く理解するには、次の公式ソースを参照してください- ASPの構成の変更.NET 4.5 Webサイトテンプレート

ASP.NET Webサイトの新しいバージョン(4.5)で発生した各変更について説明します

2
EL Yusubov

新しいMVC 5テンプレートでルーティングマップを構成する場合は、ConfigureメソッドでStartup.csファイルにルートを設定できます

1
RAUL CARBAJAL