使用 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 项目的命名空间。
启动类必须看起来一样,例如使用 ConfigureServices
和 Configure
:
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/