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(); <p>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<post></post>查询就行 配置优先学
IConfiguration的层级:
appsettings.json→ 环境变量 → 命令行参数,比如
dotnet run --environment Production会自动加载
appsettings.Production.json
真正卡住人的,从来不是语法,而是“为什么这个中间件不生效”“为什么 DI 报
Cannot resolve scoped service”“为什么配置值读出来是 null”。这些问题的答案,全藏在请求流经
Program.cs的那十几行里——而不是文档首页。
