App_Start文件夹中的ASP 4.5仅在web应用项目?(App_Start Folder i

2019-07-18 00:44发布

我有一个网站项目我已经转换为.NET 4.5。 我想用AuthConfig,我已经看到添加到App_Start目录。 一对夫妇的问题。

App_Start目录仅适用于Web应用程序项目?当我尝试添加现有的asp.net文件夹,我不认为这是要添加的选项。

其次,可我只是一个AuthConfig任何地方文件在我的网站项目,如果是这样的话?

Answer 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



Answer 2:

该App_Start文件夹被引入的MVC4模板的一部分。 没有什么特别的地方,导致在它按照惯例执行的代码。 例如,HotTowel SPA模板创建的文件夹App_Start如下:

在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();
    }


Answer 3:

虽然没有什么特别之处App_Start是的,但你可以让文件insinde该文件夹执行时启动应用程序一样Application_StartGlobal.asax 。 我使用Ninject在我的项目具有依赖注入App_Start文件夹。 有一个在我的项目没有Global.asax文件:

但我已经将所有的配置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



Answer 4:

总之:为了更深入的了解在ASP.NET 4.5的网站配置更改,看看下面的官方消息- 配置更改在ASP.NET 4.5网站模板 。

它会指导您在新版本发生在ASP.NET网站的每个变化,这是4.5



Answer 5:

如果你想为你的配置路由映射在新的MVC 5模板,您可以在配置方法Startup.cs文件中设置你的路由



文章来源: App_Start Folder in ASP 4.5 only in WebApplications Projects?