ASP.NET Core 是跨平台、高性能开源 Web 框架,需通过快速构建“Hello World→JSON→数据库”最小闭环建立体感;环境首选 .NET 9.0 SDK,用 dotnet run 验证启动,重点理解 Program.cs 中服务注册(builder.Services)、中间件配置(app.UseXxx)与请求生命周期的关系。

ASP.NET Core 是一个跨平台、高性能、开源的 Web 框架,用于构建现代 Web 应用、API、微服务甚至物联网后端。它不是 .NET Framework 的升级版,而是从头重写的轻量级实现,和 .NET 运行时深度解耦(比如你可以在 Linux 上用 dotnet 命令直接跑一个 ASP.NET Core API)。
学它不靠“背概念”,靠“写一个能跑通的最小闭环”——比如:命令行创建项目 → 启动 → 浏览器看到 “Hello World” → 改成返回 JSON → 加个数据库查一条数据。这个闭环越快打通,后续理解 Program.cs、中间件、依赖注入就越有体感。
怎么快速跑通第一个 ASP.NET Core 项目(别卡在环境上)
新手最常卡在环境没对齐,尤其是 .NET SDK 版本和模板不匹配。2025 年底主流是 .NET 9.0(LTS),Visual Studio 2022 17.12+ 或 VS Code + C# Dev Kit 都能支持。
- 先确认终端里能执行
dotnet --version,输出应为9.0.x(不是 6.0、7.0 或 8.0);如果不是,去 dotnet.microsoft.com/download 下最新 SDK - 别用 Visual Studio 的“旧模板”(如带 “.NET Core” 字样的),选
ASP.NET Core Web API或ASP.NET Core Web App (Model-View-Controller),且明确勾选.NET 9.0 - 创建完立刻进项目目录,执行
dotnet run—— 不要急着加控制器或数据库,先确保控制台打印出Now listening on: https://localhost:5001并能在浏览器打开 - 如果报错
Unable to configure HTTPS endpoint,说明开发证书没信任:运行dotnet dev-certs https --trust(Windows/macOS),Linux 用户需手动配置或改用 HTTP
Program.cs 里那几行代码到底在干什么
从 .NET 6 开始,Program.cs 是唯一入口,没有 Startup.cs 了。它表面简洁,实则浓缩了三大关键动作:注册服务、配置中间件、启动宿主。初学者容易把 builder.Services.AddXxx() 和 app.UseXxx() 搞混顺序。
-
builder.Services是“准备阶段”:告诉框架“我之后要用数据库、日志、JWT 认证”,但此时什么都没发生,只是记下来 -
app.UseXxx()是“执行阶段”:定义请求进来时按什么顺序经过哪些处理环节(比如先走 CORS,再走认证,最后才到控制器) - 常见错误:
app.UseAuthentication()写在app.UseAuthorization()后面 → 认证永远不触发;或者app.MapControllers()被写在app.UseStaticFiles()前面 → 静态资源 404
var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); // 注册 MVC 控制器服务 builder.Services.AddEndpointsApiExplorer();var app = builder.Build(); app.UseHttpsRedirection(); // 中间件:强制跳 HTTPS app.UseAuthorization(); // 中间件:检查权限(必须在 UseAuthentication 之后) app.MapControllers(); // 中间件:把路由映射到控制器方法 app.Run();
学的时候该跳过什么、该盯住什么
路线图里堆满“Entity Framework Core”“Redis 缓存”“AutoFac”“SOLID 原则”,但刚起步时,只盯死三件事就够了:HTTP 生命周期、依赖注入的实际用法、配置加载逻辑。其他全是“有需求再查”的扩展项。
- 先别碰 ORM:用
new HttpClient()调一个公开 API(如https://jsonplaceholder.typicode.com/posts/1),理解IHttpClientFactory怎么注册、怎么注入、怎么避免连接泄漏 - 别一上来就建 Repository 层:把数据库操作直接写在 Controller 里(临时),跑通 EF Core 连接字符串、
DbContext注册、DbSet查询就行 - 配置优先学
IConfiguration的层级:appsettings.json→ 环境变量 → 命令行参数,比如dotnet run --environment Production会自动加载appsettings.Production.json
真正卡住人的,从来不是语法,而是“为什么这个中间件不生效”“为什么 DI 报 Cannot resolve scoped service”“为什么配置值读出来是 null”。这些问题的答案,全藏在请求流经 Program.cs 的那十几行里——而不是文档首页。










