ASP 4.5中的App_Start文件夹仅在Web应用程序项目中?

时间:2013-01-09 03:58:45

标签: asp.net .net-4.5 app-startup

我有一个网站项目我已转换为。NET 4.5 。我想使用我见过添加到 App_Start 目录中的 AuthConfig 。几个问题。

App_Start 目录是否仅适用于Web应用程序项目?当我尝试添加现有的asp.net文件夹时,我不认为它是一个可以添加的选项。

其次,如果是这样的话,我可以在我的网站项目中的任何地方添加 AuthConfig 文件吗?

5 个答案:

答案 0 :(得分:19)

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

答案 1 :(得分:19)

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

答案 2 :(得分:12)

虽然There is nothing special about App_Start,但你可以创建文件insinde这个文件夹在应用程序启动时执行,如Application_Start Global.asaxApp_Start。我在我的项目中使用Ninject依赖注入器,其中包含NinjectWebCommon文件夹。我的项目中有没有Global.asax 文件:

enter image description here

但是我在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

这些属性使得在应用程序上执行的{{1}}方法已启动。有关更多信息,请查看WebActivator / PreApplicationStartMethod

答案 3 :(得分:2)

简而言之:为了更深入地了解ASP.NET 4.5网站中的配置更改,请查看以下官方来源 - Configuration Changes in ASP.NET 4.5 Website Templates

它将指导您在ASP.NET网站上发布的每个更改,即4.5

答案 4 :(得分:1)

如果要在新的MVC 5模板上配置路由映射,可以在Configure方法中的Startup.cs文件上设置路由