本教程将遵循由浅入深、理论与实践相结合的原则,重点介绍当前最主流和推荐的 ASP.NET Core 框架。

ASP.NET 实践教程:从入门到实战
第一部分:基础入门
目标: 理解 ASP.NET Core 的基本概念,并成功搭建开发环境,创建第一个“Hello, World”应用。
第1章:ASP.NET Core 简介
-
什么是 ASP.NET Core?
- 它是一个跨平台、高性能、开源的框架,用于构建现代化的、基于云的互联网连接的应用程序(如 Web API、Web 应用、微服务等)。
- 跨平台: 可以在 Windows、macOS 和 Linux 上运行和开发。
- 高性能: 通过优化和 Kestrel 服务器实现了极高的性能。
- 开源: 由微软和社区共同维护,在 GitHub 上开源。
- 模块化: 采用 NuGet 包的形式,可以按需引入功能,保持项目轻量。
-
与旧版 ASP.NET 的区别
- .NET Core vs .NET Framework: ASP.NET Core 是基于 .NET Core 的,而旧的 ASP.NET 是基于 .NET Framework 的。.NET Core 是全新的、跨平台的。
- 配置方式: 从
web.config改为更灵活的appsettings.json。 - 项目结构: 更简洁,没有了
Global.asax和Web.config。 - 依赖注入: 从框架层面原生支持依赖注入,是现代应用开发的核心模式。
第2章:开发环境搭建
-
安装 .NET SDK (Software Development Kit)
(图片来源网络,侵删)- 访问 .NET 官网 下载并安装最新的 .NET SDK。
- SDK 包含了运行时和开发工具(如
dotnet命令行工具)。 - 安装后,打开命令行工具,输入
dotnet --version验证安装成功。
-
选择代码编辑器
- Visual Studio (推荐): 微软官方的强大 IDE。
- Visual Studio Community (社区版): 免费,功能足够强大,适合个人开发者和小团队。
- 安装时务必勾选 "ASP.NET 和 Web 开发" 工作负载。
- Visual Studio Code (VS Code): 轻量级、跨平台的代码编辑器,配合 C# 扩展使用,非常流行。
- Visual Studio (推荐): 微软官方的强大 IDE。
第3章:创建第一个 ASP.NET Core 应用
我们将使用命令行工具创建一个最简单的 Web 应用。
-
创建项目
- 打开终端或命令提示符。
- 运行以下命令创建一个新的 Web API 项目:
dotnet new webapi -o MyFirstWebApi
dotnet new webapi: 使用webapi模板创建一个 API 项目。-o MyFirstWebApi: 指定输出目录为MyFirstWebApi。
-
运行项目
(图片来源网络,侵删)- 进入项目目录:
cd MyFirstWebApi
- 运行项目:
dotnet run
- 你会看到终端输出类似信息,并显示一个本地地址,通常是
https://localhost:7xxx和http://localhost:5xxx。 - 打开浏览器,访问
https://localhost:7xxx/weatherforecast,你会看到一个 JSON 格式的天气预报数据,恭喜,你的第一个 Web API 已经运行成功了!
- 进入项目目录:
-
初探项目结构
Program.cs: 应用的入口点,在这里配置和启动 Web 应用,在较新的 .NET 6+ 版本中,它非常简洁,使用了最少的顶级 API。Controllers/WeatherForecastController.cs: 控制器,负责处理传入的 HTTP 请求并返回响应。appsettings.json: 应用的配置文件。MyFirstWebApi.csproj: 项目文件,定义了项目依赖和元数据。
第二部分:核心概念与MVC模式
目标: 掌握 ASP.NET Core 的请求处理流程,理解 MVC 设计模式,并能够创建动态的网页。
第4章:请求处理管道与中间件
-
什么是中间件?
- 中间件是组装到应用管道中以处理请求和响应的软件组件,每个中间件都可以:
- 选择将请求传递给管道中的下一个组件。
- 在管道中的下一个组件前后执行工作。
- 经典例子: 请求 -> 身份验证中间件 -> 路由中间件 -> 控制器 -> 响应中间件 -> 响应返回客户端。
- 中间件是组装到应用管道中以处理请求和响应的软件组件,每个中间件都可以:
-
如何在
Program.cs中配置中间件?app.UseHttpsRedirection(): 将 HTTP 请求重定向到 HTTPS。app.UseStaticFiles(): 提供静态文件(如 CSS, JavaScript, 图片)。app.UseRouting(): 启用路由匹配。app.UseAuthorization(): 启用授权。app.MapControllers(): 将 HTTP 请求映射到控制器。
第5章:MVC (Model-View-Controller) 模式入门
这是构建 Web 应用的经典模式。
-
Model (模型)
- 代表应用程序的数据和业务逻辑。
- 通常是一个 C# 类(POCO - Plain Old CLR Object)。
- 示例: 一个
Product类,包含Id,Name,Price等属性。
-
View (视图)
- 负责显示数据,是用户界面。
- 在 ASP.NET Core 中,通常使用 Razor 语法(HTML + C#)。
- 示例: 一个显示产品列表的
Products.cshtml文件。
-
Controller (控制器)
- 作为 Model 和 View 之间的协调者。
- 接收用户输入(来自 View),调用 Model 处理业务逻辑,然后选择一个 View 来渲染结果并返回给用户。
第6章:创建一个简单的 MVC 应用
-
创建 MVC 项目
dotnet new mvc -o MyMvcApp cd MyMvcApp dotnet run
访问
https://localhost:xxxx/,你会看到一个默认的欢迎页面。 -
创建 Model
- 在
Models文件夹下创建Product.cs:namespace MyMvcApp.Models { public class Product { public int Id { get; set; } public string Name { get; set; } public decimal Price { get; set; } } }
- 在
-
创建 Controller
-
在
Controllers文件夹下创建ProductsController.cs:using Microsoft.AspNetCore.Mvc; using MyMvcApp.Models; namespace MyMvcApp.Controllers { public class ProductsController : Controller { public IActionResult Index() { // 模拟一些数据 var products = new List<Product> { new Product { Id = 1, Name = "笔记本电脑", Price = 5999 }, new Product { Id = 2, Name = "无线鼠标", Price = 99 } }; // 将数据传递给 View return View(products); } } }
-
-
创建 View
-
在
Views/Products文件夹下创建Index.cshtml:@model IEnumerable<MyMvcApp.Models.Product> <h1>产品列表</h1> <table> <thead> <tr> <th>ID</th> <th>名称</th> <th>价格</th> </tr> </thead> <tbody> @foreach (var product in Model) { <tr> <td>@product.Id</td> <td>@product.Name</td> <td>@product.Price.ToString("C")</td> <!-- C 表示货币格式 --> </tr> } </tbody> </table> -
访问
https://localhost:xxxx/Products/Index,你将看到产品列表页面。
-
第三部分:进阶主题与实战
目标: 学习数据库交互、用户认证、API 开发等核心技能,并能构建一个完整的项目。
第7章:Entity Framework Core 与数据库交互
-
什么是 EF Core?
微软官方的 ORM(对象关系映射)框架,让你可以用 C# 对象来操作数据库,而不用写复杂的 SQL 语句。
-
实践步骤:
-
安装 NuGet 包:
dotnet add package Microsoft.EntityFrameworkCore.Sqlite dotnet add package Microsoft.EntityFrameworkCore.Design
-
创建数据上下文: 在
Models文件夹下创建AppDbContext.cs:using Microsoft.EntityFrameworkCore; namespace MyMvcApp.Models { public class AppDbContext : DbContext { public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { } public DbSet<Product> Products { get; set; } } } -
注册服务: 在
Program.cs中注册 DbContext:// ... 其他 using ... using MyMvcApp.Models; var builder = WebApplication.CreateBuilder(args); // 添加服务到容器。 builder.Services.AddControllersWithViews(); // 注册 DbContext builder.Services.AddDbContext<AppDbContext>(options => options.UseSqlite(builder.Configuration.GetConnectionString("DefaultConnection"))); var app = builder.Build(); // ... 其余代码 ... -
配置连接字符串: 在
appsettings.json中添加:"ConnectionStrings": { "DefaultConnection": "Data Source=app.db" } -
应用数据库迁移:
- 在项目根目录创建
Migrations文件夹。 - 打开终端,运行:
dotnet ef migrations add InitialCreate
(这会生成创建数据库表的代码)
- 运行命令创建数据库:
dotnet ef database update
- 在项目根目录创建
-
使用数据: 修改
ProductsController,从数据库读取数据。
-
第8章:身份验证与授权
-
使用 ASP.NET Core Identity
-
这是最常用的用户认证和授权系统。
-
安装 NuGet 包:
dotnet add package Microsoft.AspNetCore.Identity.EntityFrameworkCore -
创建
IdentityUser和IdentityDbContext:// Models/AppUser.cs using Microsoft.AspNetCore.Identity; public class AppUser : IdentityUser { } // Models/AppIdentityDbContext.cs public class AppIdentityDbContext : IdentityDbContext<AppUser> { public AppIdentityDbContext(DbContextOptions<AppIdentityDbContext> options) : base(options) { } } -
注册服务并配置: 在
Program.cs中注册 Identity 服务,并配置登录/登出页面。 -
在 Controller 或 Action 上使用
[Authorize]特性来保护需要登录才能访问的页面。
-
第9章:构建 RESTful API
-
什么是 RESTful API?
一种设计风格,用于创建 Web API,它使用 HTTP 方法(GET, POST, PUT, DELETE)来操作资源。
-
实践:
- 创建一个新的 API Controller,
ProductsApiController。 - 使用
[ApiController]特性,它会自动处理模型验证等。 - GET /api/products: 获取所有产品。
[HttpGet] public async Task<ActionResult<IEnumerable<Product>>> GetProducts() { var products = await _context.Products.ToListAsync(); return Ok(products); } - POST /api/products: 创建一个新产品。
[HttpPost] public async Task<ActionResult<Product>> CreateProduct(Product product) { _context.Products.Add(product); await _context.SaveChangesAsync(); return CreatedAtAction(nameof(GetProduct), new { id = product.Id }, product); } - 前端应用(如 React, Vue, Angular)或 Postman 等工具可以调用这些 API。
- 创建一个新的 API Controller,
第10章:实战项目:待办事项应用
综合运用以上知识,构建一个完整的 To-Do List 应用。
-
功能需求:
- 用户可以注册和登录。
- 登录后,可以查看自己的待办事项列表。
- 可以添加新的待办事项。
- 可以标记待办事项为已完成。
- 可以删除待办事项。
-
技术栈:
- 后端: ASP.NET Core MVC + Identity + EF Core (SQLite)。
- 前端: 简单的 Razor 视图即可,也可以学习使用 Blazor。
-
开发步骤:
- 步骤 1: 创建项目,配置好 EF Core 和 Identity。
- 步骤 2: 创建
TodoItemModel 和TodoItemController。 - 步骤 3: 实现用户注册和登录功能。
- 步骤 4: 在
TodoItemController中添加[Authorize],确保只有登录用户才能访问。 - 步骤 5: 在 TodoItem 和 User Model 之间建立关联(一个 User 有多个 TodoItem)。
- 步骤 6: 创建 Razor 视图,实现列表、添加、完成、删除的 UI 和逻辑。
- 步骤 7: 测试所有功能。
第四部分:部署与优化
目标: 了解如何将应用部署到生产环境,并进行性能优化。
第11章:部署
-
发布应用:
- 在 Visual Studio 中右键项目 -> "发布"。
- 或使用命令行:
dotnet publish -c Release -o ./publish
- 这会生成一个可以在服务器上运行的文件夹。
-
部署目标:
- IIS (Windows Server): 最常见的 Web 服务器部署方式。
- Azure App Service: 微软的云平台,一键部署,非常方便。
- Docker: 将应用容器化,实现跨平台部署和环境一致性。
- Linux Nginx: 在 Linux 服务器上,使用 Nginx 作为反向代理来托管 Kestrel。
第12章:性能优化与最佳实践
-
启用编译:
- 在开发环境中,视图是动态编译的,在生产环境中,应预编译视图以提高启动速度。
- 在
.csproj文件中添加:<PropertyGroup> <RazorCompileOnBuild>true</RazorCompileOnBuild> </PropertyGroup>
-
使用静态文件中间件: 确保只提供必要的静态文件,并配置缓存策略。
-
优化数据库查询: 避免在循环中查询数据库,使用
Include或Select进行关联查询和投影。 -
使用异步编程: 在所有 I/O 操作(如数据库访问、文件读写、网络请求)中使用
async和await,以避免阻塞线程,提高并发能力。 -
监控: 使用 Application Insights 等工具监控应用的健康状况和性能。
学习资源推荐
- 官方文档 (必看): ASP.NET Core Documentation - 最权威、最准确的学习资料。
- 视频教程:
- Channel 9 (微软官方): 大量高质量的视频教程。
- YouTube: 搜索 "ASP.NET Core Tutorial",有很多优秀的频道(如 FreeCodeCamp, Programming with Mosh, Kudvenkat 等)。
- 书籍:
- 《ASP.NET Core in Action》
- 《Pro ASP.NET Core MVC》
- 社区:
- Stack Overflow: 解决编程问题的首选。
- GitHub: 查看源代码和优秀项目。
这份教程为你提供了一个清晰的 ASP.NET Core 学习路径,最重要的是 动手实践,跟着教程一步步敲代码,并尝试自己构建项目,祝你学习愉快!
