文档
C# / ASP.NET Core 毕设入门教程
前言
C# 在毕设中的三大主战场:ASP.NET Core Web API 后端、WPF/WinForms 桌面应用、Unity 游戏开发。本教程聚焦毕设最常用的 ASP.NET Core + EF Core 后端开发。
第一章:快速搭建 Web API 项目
三板斧创建项目
dotnet new webapi -n MyProject
cd MyProject
dotnet run
# 浏览器访问 http://localhost:5000/swagger
项目结构
MyProject/
├── Controllers/ # API 控制器
├── Models/ # 数据模型
├── Services/ # 业务逻辑
├── Data/ # DbContext
├── appsettings.json # 配置文件
└── Program.cs # 入口
第二章:构建一个完整的 CRUD API
Model
public class TodoItem
{
public int Id { get; set; }
public string Title { get; set; } = "";
public bool IsCompleted { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
}
DbContext
public class AppDbContext : DbContext
{
public DbSet<TodoItem> Todos => Set<TodoItem>();
public AppDbContext(DbContextOptions<AppDbContext> o) : base(o) {}
}
Controller(最小 API 风格)
app.MapGet("/todos", async (AppDbContext db) => await db.Todos.ToListAsync());
app.MapPost("/todos", async (TodoItem todo, AppDbContext db) =>
{
db.Todos.Add(todo);
await db.SaveChangesAsync();
return Results.Created($"/todos/{todo.Id}", todo);
});
app.MapDelete("/todos/{id}", async (int id, AppDbContext db) =>
{
var todo = await db.Todos.FindAsync(id);
if (todo is null) return Results.NotFound();
db.Todos.Remove(todo);
await db.SaveChangesAsync();
return Results.NoContent();
});
第三章:毕设常用模式
三层架构
Controller → Service → Repository → DbContext
JWT 认证(毕设加分项)
dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options => {
options.TokenValidationParameters = new() {
ValidateIssuer = true,
ValidateAudience = true,
// ... 配置密钥和签发者
};
});
全局异常处理
app.UseExceptionHandler(errorApp =>
{
errorApp.Run(async context =>
{
context.Response.StatusCode = 500;
context.Response.ContentType = "application/json";
await context.Response.WriteAsync("{\"error\":\"服务器内部错误\"}");
});
});
第四章:毕设答辩要点
演示流程建议
- 启动项目
dotnet run - 打开 Swagger 页面展示 API 列表
- 用 Swagger 调几个接口展示 CRUD
- 展示数据库中的数据(SQLite 用 DB Browser 打开)
常见答辩问题
- "为什么选 ASP.NET Core 而不是 Spring Boot?" → 强调 .NET 生态、LINQ 开发效率、学习曲线
- "数据库用的什么?" → SQLite 零部署,适合毕设
- "安全性怎么保证?" → JWT 认证、参数校验、CORS 配置
思考题
- RESTful API 的设计原则有哪些?你的接口是否符合?
async/await在 ASP.NET Core 中的作用是什么?- EF Core 的
Include()和ThenInclude()解决了什么问题?