3.1 AppStartup 启动
3.1.1 Startup
类
Startup
类是 ASP.NET Core
应用程序启动默认调用的类,该类是在 Program.cs
中配置:
.NET5 方式
Furion.Web.Entry\Program.cs
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
namespace Furion.Web.Entry
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args)
{
return Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}
}
.NET6 方式
在 .NET6
中微软已不再推荐 UseStartup<TStarup>()
方式。
3.1.1.1 Startup
两个重要方法
Startup
默认有两个重要的方法:
ConfigureServices
:配置应用所需服务,在该方法中可以添加应用所需要的功能或服务Configure
:配置应用请求处理管道
默认代码如下:
Furion.Web.Entry\Startup.cs
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
namespace Furion.Web.Entry
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
}
}
}
在这里,不打算详细讲 Startup
类的具体功能和作用。
了解更多
想了解更多 Startup
知识可查阅 ASP.NET Core - Startup 类 章节。
3.1.2 AppStartup
在 Furion
框架中,提供了更为灵活的 Startup
类配置方式,无需在 Web 启用层
中配置,可将配置放到任何项目层。
可能会有读者有疑问,为什么要多此一举呢?原因有几点:
Startup
类默认和Web 应用层
绑定在一起,这样就会导致如果我创建了新的Web 应用层
,Startup
又要重新配置- 随着业务的增长,需要集成越来越多的第三方服务,这时候
Startup
类就会变得越来越臃肿,难以维护 Startup
类无法与其他项目类型进行共用
所以,Furion
提供了更加灵活的配置方式:AppStartup
。
注意事项
如果 AppStartup
的派生类所在的项目层没有被启动层直接或间接添加引用,那么这个 Startup.cs
就会被忽略,也就是不会自动载入注册。