ASP.NET 教程(2025 最新版)——从零到部署全栈网站
ASP.NET 目前主要指 ASP.NET Core,它是微软官方推荐的现代、跨平台、高性能的 Web 开发框架,支持 Windows、Linux、macOS 和 Docker。
第一步:环境准备(2025 年推荐方式)
- 安装 .NET 9 SDK(当前最新稳定版)
下载地址:https://dotnet.microsoft.com/download/dotnet/9.0 - 推荐编辑器/IDE(任选其一):
- Visual Studio 2022(17.12+)专业版或 Community(免费)
- Visual Studio Code + C# Dev Kit 扩展
- JetBrains Rider(付费但体验极佳)
- 检查安装成功:
dotnet --version
# 应该显示 9.0.xxxx
第二步:创建第一个 ASP.NET Core 项目
# 1. 创建 MVC 项目(最经典)
dotnet new mvc -n MyFirstWebApp
cd MyFirstWebApp
# 2. 或者创建极简 API 项目
dotnet new webapi -n MyApi
# 3. 或者创建 Razor Pages 项目
dotnet new webapp -n MyRazorApp
# 4. 或者创建 Blazor 项目(前后端一体)
dotnet new blazor -n MyBlazorApp # Blazor Server
dotnet new blazorwasm -n MyWasm # Blazor WebAssembly
运行项目:
dotnet watch
# 自动打开 https://localhost:7777(默认启用了 HTTPS)
第三步:ASP.NET Core 项目结构速览
MyFirstWebApp/
├── Program.cs ← 入口点(.NET 6+ 极简托管模型)
├── appsettings.json ← 配置
├── Controllers/ ← MVC 控制器
├── Views/ ← Razor 视图 (.cshtml)
├── wwwroot/ ← 静态文件(css/js/images)
├── Models/ ← 数据模型
├── Services/ ← 服务层
└── Data/ ← EF Core 数据库上下文
.NET 9 的 Program.cs 极简写法(2025 主流):
var builder = WebApplication.CreateBuilder(args);
// 添加服务
builder.Services.AddControllersWithViews();
// builder.Services.AddRazorPages();
// builder.Services.AddEndpointsApiExplorer(); + AddSwaggerGen();
var app = builder.Build();
// 中间件管道
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
第四步:常用技术栈快速上手
- 实体框架 Core(EF Core)数据库操作(2025 推荐)
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools
// Model
public class Product
{
public int Id { get; set; }
public string Name { get; set; } = null!;
public decimal Price { get; set; }
}
// DbContext
public class AppDbContext : DbContext
{
public DbSet<Product> Products => Set<Product>();
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }
}
// Program.cs 注册
builder.Services.AddDbContext<AppDbContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("Default")));
// 迁移
dotnet ef migrations add InitialCreate
dotnet ef database update
- 最小 API(.NET 9 最火写法)
app.MapGet("/weatherforecast", () =>
{
var forecast = Enumerable.Range(1, 5).Select(index =>
new WeatherForecast
(
DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
Random.Shared.Next(-20, 55),
["Sunny", "Cloudy", "Rain", "Snow"][Random.Shared.Next(4)]
))
.ToArray();
return forecast;
})
.WithName("GetWeatherForecast")
.WithOpenApi();
record WeatherForecast(DateOnly Date, int TemperatureC, string? Summary)
{
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
}
- 身份认证(Identity)快速集成
dotnet add package Microsoft.AspNetCore.Identity.EntityFrameworkCore
推荐使用最新的 ASP.NET Core Identity + EF Core 或直接使用 AspNetCore.Identity.UI 脚手架(带登录注册页面)。
- 前端选择(2025 主流组合)
- 传统服务端渲染:Razor Pages / MVC + Bootstrap 5 / HTMX
- 现代 SPA:Blazor WebAssembly / React + ASP.NET Core API
- 最火轻量交互:MVC + Hotwire-style(HTMX + Alpine.js)
第五步:推荐学习路线(30 天入门到精通)
| 天数 | 内容 | 推荐资源 |
|---|---|---|
| 1-3 | 环境搭建 + 第一个 MVC / 最小 API 项目 | 官方文档 https://learn.microsoft.com/aspnet/core |
| 4-7 | 路由、控制器、视图、Razor 语法 | 《C#与.NET全栈开发》 |
| 8-12 | EF Core + SQL Server / PostgreSQL / SQLite | EF Core 官方教程 |
| 13-18 | 身份认证、授权、JWT、Cookie | Microsoft Identity 平台 |
| 19-23 | 前端:Blazor 或 React + API | BlazorSchool / React 官方 |
| 24-27 | 部署:Docker + Linux + Nginx / Azure / IIS | 《ASP.NET Core 部署实战》 |
| 28-30 | 项目实战:博客系统 / 电商后台 / 在线考试 | GitHub 开源项目 |
优质免费学习资源(2025 最新)
- 官方免费教程(最权威):
https://learn.microsoft.com/zh-cn/aspnet/core/ - 视频教程(中文):
- B站:老张的哲学 / 峰华前端工程师(ASP.NET Core 9 新特性)
- YouTube:Nick Chapsas、IAmTimCorey(英文极佳)
- 实战项目(强烈建议直接克隆跑):
- eShopOnWeb(微软官方参考架构):https://github.com/dotnet/eshop
- Clean Architecture 模板:https://github.com/jasontaylordev/clean/clean-architecture
- 书籍推荐(2025):
- 《.NET 9 与 C# 13 高级编程》(第11版)
- 《ASP.NET Core 9实战开发》
开始动手吧!现在直接在命令行输入:
dotnet new webapp -n MyShop --auth Individual
cd MyShop
dotnet run
3 分钟后你就拥有一个带登录注册的完整现代 Web 应用了!
有任何问题(配置、部署、性能优化、微服务等)随时问我,我可以一步步带你写完整项目!🚀