首页 文章

在ASP.NET 5和MVC 6中从Web项目中分离启动配置的最佳方法

提问于
浏览
3

使用MVC5,创建一个引用所有层的引导程序项目非常容易,从而将UI层与对基础架构逻辑的引用分离开来 . 该项目将包含启动配置逻辑,例如设置IoC容器 .

这样做的方法是定义一个启动类:

public class Startup
{
    public static void Start()
    {
        // startup configuration (IoC etc) goes here
    }
}

然后在 AssemblyInfo.cs 中添加一行:

[assembly: PreApplicationStartMethod(typeof(Startup), "Start")]

不幸的是,这种方法不再适用于asp.net 5.我简要介绍了文档,但我发现的只是框架在Web项目中查找名为Startup的类 .

我也看了 Microsoft.AspNet.Hosting source code,它似乎负责找到Startup类 . 我可以看到对配置类的一些引用,因此有可能通过使用某种配置设置来加载程序集,但我无法确认或确定哪个设置 .

另外,如果这是真的,当在Startup类中加载文件本身时,如何使用 config.json 文件确定Startup类?是否有不同的配置启动程序集的选项,例如使用环境变量?

2 回答

  • 2

    只想关注这一点,在asp.net core rtm中,你既不需要任何.ini也不需要.json,你需要做的只是调用.UseStartup(“NamespaceOfYourStartup”)并确保包含Startup类的程序集在您的asp.net核心Web项目已发布文件的位置相同 .

  • 0

    您可以更改WebHostBuilder将查找启动类型的程序集 .

    将名称为 Microsoft.AspNet.Hosting.ini 的INI配置文件添加到 wwwroot 文件夹中,其中包含以下内容:

    [Hosting]
    Application = App.Bootstrapper
    

    App.Bootstrapper 是应用程序引导程序项目的命名空间 .

    启动类必须看起来相同,例如与 ConfigureServicesConfigure

    public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
            // ...
        }
    
        public void Configure(IApplicationBuilder app)
        {
            // ...
        }
    }
    

    如果您很好奇,可以看到确定启动类型here的逻辑 . 如果我们在INI文件中指定 Hosting:Application 键,它将使用该值而不是 appEnvironment.ApplicationName .

相关问题