网站首页 > 文章精选 正文
asp.net core默认项目包括
项目根目录级的Startup.cs、Program.cs、appsettings.json(
appsettings.Development.json) launchSettings.json
Controllers文件夹下面的ValuesController.cs
以及启动配置文件launchSettings.json
Program.cs
Program.cs 配置程序启动项以及各类初始化, Asp.net Core 3.0以及以后版本的替换依赖注入就得在Program内配置
.net core 3.0之前的Program.cs
.net core 3.0之后的Program.cs
.net core 3.0之前的Program.cs
.net core 2.2以及之前的版本,控制容器的,主要是WebHost,默认实现也以此为主
在
WebHost.CreateDefaultBuilder(args)之后,就可以完成各种对于WebHost的配置,常见的默认函数 UseStartu、UseUrl以及UseConfiguration等。
执行完CreateWebHostBuilder函数后,返回IWebHostBuilder,然后Build->Run项目启动
.net core 3.0之后的Program.cs
.net core 3.0以及以后,控制容器的,从WebHost变成Host,默认实现也以此为主
在
WebHost.CreateDefaultBuilder(args)之后,执行ConfigureWebHostDefaults函数,在函数内就可以完成各种对于WebHost的配置,常见的默认函数 UseStartu、UseUrl以及UseConfiguration等。
执行完CreateWebHostBuilder函数后,返回IWebHostBuilder,然后Build->Run项目启动
Startup.cs
Startup是Asp.net core启动程序
Startup启动过程中默认实现并启动了IStartup接口和IStartupFilter接口
IStartup是Starup的隐式实现,IStartupFilter是启动过程中的过滤器,可以完成一些加载在asp.net core管道/中间件之前的额外流程
IStartup/Startup
Starup是根据IStartup实现的
public interface IStartup
{
IServiceProvider ConfigureServices(IServiceCollection services);
void Configure(IApplicationBuilder app);
}
ConfigureServices方法只能有一个参数,且参数类型为IServiceCollection,返回值为IServiceProvider
Startup类的ConfigureServices方法,在asp.net core 3.0以及以上,返回值只能为void
Configure方法可以依赖注入多个Singleton/Transient生命周期的服务
IStartupFilter
IStartupFilter是启动前的过滤器
public interface IStartupFilter
{
Action<IApplicationBuilder> Configure(Action<IApplicationBuilder>
next);
}
在启动过程中,通过Ioc容器获取一组IStartupFilter实力,然后列表反转执行
private RequestDelegate BuildApplication()
{
..
IApplicationBuilder builder = builderFactory.CreateBuilder(Server.Features);
builder.ApplicationServices = _applicationServices;
var startupFilters = _applicationServices.GetService<IEnumerable<IStartupFilter>>();
Action<IApplicationBuilder> configure = _startup.Configure;
foreach (var filter in startupFilters.Reverse())
{
configure = filter.Configure(configure);
}
configure(builder);
return builder.Build();
}
后记
开了一个系列,杂谈一下asp.net core的内容,做一下系统性的总结分享。网上不缺乏分享asp.net core细节的,无论是源码级,还是应用上的sample,但是缺乏一个系统性的系列。
不自量力,想分享一点。
原文地址:
https://www.cnblogs.com/NCoreCoder/p/13426122.html
猜你喜欢
- 2025-05-07 ASP.NET 8 MVC 和 MinIO 实现建立一个可以访问的数据库
- 2025-05-07 网站建设制作步骤有哪些?网站建设方案
- 2025-05-07 个人web开发我选Asp.net core,你选谁?PHP?还是JSP?
- 2025-05-07 在微服务中使用 ASP.NET Core 实现事件溯源和 CQRS
- 2025-05-07 微软宣布ASP.NET5开源,跨Win10、Mac和Linux
- 2025-05-07 网站建设制作流程有哪些?(网站建设流程,分为哪六个步骤)
- 2025-05-07 使用ASP.NET Core实现MongoDB的CRUD操作
- 2025-05-07 ASP.NET Web API中实现版本(asp.net web api教程)
- 2025-05-07 ASP.NET 8 Web API中使用ActionFilter和特性来实现接口幂等
- 2025-05-07 ASP.NET Core 9.0的7个方面重大更新!
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)