Подтвердить что ты не робот

Папка App_Start в ASP 4.5 только в проектах WebApplications?

У меня есть проект веб-сайта, который я преобразовал в .NET 4.5. Я хотел бы использовать AuthConfig, который я видел, добавленный в каталог App_Start. Несколько вопросов.

Доступен ли каталог App_Start только для проектов веб-приложений?, Когда я пытаюсь добавить существующую папку asp.net, я не вижу ее в качестве опции для добавления.

Во-вторых, могу ли я создать файл AuthConfig в любом месте моего веб-сайта, если это так?

4b9b3361

Ответ 1

В App_Start нет ничего особенного, это просто папка. Что особенного в том, как он используется, и специфичен для платформы WebActivator, которая представляет собой пакет NuGet, который вы можете установить. App_Start и WebActivator не относятся к .NET 4.5, но для них требуется .net 4 (что означает VS 2010 или 2012)

См. http://blog.davidebbo.com/2011/02/appstart-folder-convention-for-nuget.html

Ответ 2

Папка App_Start была представлена ​​как часть шаблонов MVC4. В этом нет ничего особенного, что приводит к тому, что код будет выполняться в нем по соглашению. Например, шаблон SPA HotTowel создает в папке 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();
    }

Ответ 3

Хотя Нет ничего особенного в App_Start, но вы можете делать файлы insinde, эта папка выполняется, когда приложение запускается как Application_Start внутри Global.asax. Я использую Ninject зависимый инжектор в моем проекте с папкой App_Start. В моем проекте нет файла Global.asax:

enter image description here

но вся конфигурация i, установленная в файле 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

Ответ 4

Вкратце: Для более глубокого понимания изменений конфигурации в веб-сайтах ASP.NET 4.5 обратитесь к следующему официальному источнику - Конфигурация Изменения в шаблонах веб-сайтов ASP.NET 4.5.

Он проинструктирует вас о каждом изменении, которое произошло в новой версии на веб-сайте ASP.NET, что составляет 4,5

Ответ 5

Если вы хотите настроить карту маршрутизации на новых шаблонах MVC 5, вы можете установить свои маршруты в файле Startup.cs в методе Configure.