c# - 在 ASP.NET 5 和 MVC 6 中将启动配置与 Web 项目分离的最佳方法

标签 c# asp.net-core asp.net-core-mvc onion-architecture

使用 MVC5,可以非常轻松地创建一个引用所有层的 Bootstrap 项目,从而将 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 类?是否有不同的选项来配置启动程序集,例如使用环境变量?

最佳答案

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

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

[Hosting]
Application = App.Bootstrapper

其中 App.Bootstrapper 是您的应用程序 Bootstrap 项目的命名空间。

启动类必须看起来一样,例如使用 ConfigureServicesConfigure:

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

    public void Configure(IApplicationBuilder app)
    {
        // ...
    }
}

好奇的话可以看看判断启动类型的逻辑here .如果我们在 INI 文件中指定 Hosting:Application 键,它将使用该值代替 appEnvironment.ApplicationName

关于c# - 在 ASP.NET 5 和 MVC 6 中将启动配置与 Web 项目分离的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31913467/

相关文章:

javascript - 获取外键表数据

c# - 从 MVC 迁移到 ASP.NET Core 3.1 中的端点路由时,带有角色的 AuthorizeAttribute 不起作用

Angular 5 类型错误 : AngularCompilerPlugin is not a constructor

asp.net-core - Service Fabric 本地集群上的托管环境 Asp.net Core

c# - 如何在 c# 中测量从 Windows XP 到 Windows 8 的进程上传和下载网络利用率?

c# - 想要使用 javascript 显示消息框

c# - 如何处理 XmlReader.Create 的异常

c# - 在 Winform XNA 中构建内容

c# - Entity Framework Core 2.1 中特定环境的播种数据

c# - 使用依赖注入(inject)访问 DbContext