ASP.NET Core入门 #
一、ASP.NET Core概述 #
1.1 什么是ASP.NET Core #
ASP.NET Core是.NET的跨平台Web开发框架。
1.2 特点 #
- 跨平台
- 高性能
- 模块化
- 依赖注入
- 中间件
二、创建项目 #
2.1 命令行创建 #
bash
dotnet new webapi -n MyApi
dotnet new mvc -n MyMvc
dotnet new web -n MyWeb
dotnet new blazor -n MyBlazor
2.2 项目结构 #
text
MyApi/
├── Controllers/
├── Program.cs
├── appsettings.json
├── appsettings.Development.json
└── MyApi.csproj
2.3 Program.cs #
csharp
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
三、中间件 #
3.1 中间件概念 #
中间件是处理请求和响应的组件。
3.2 内置中间件 #
csharp
var app = builder.Build();
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();
3.3 自定义中间件 #
csharp
public class LoggingMiddleware
{
private readonly RequestDelegate _next;
private readonly ILogger<LoggingMiddleware> _logger;
public LoggingMiddleware(RequestDelegate next, ILogger<LoggingMiddleware> logger)
{
_next = next;
_logger = logger;
}
public async Task InvokeAsync(HttpContext context)
{
_logger.LogInformation($"请求: {context.Request.Method} {context.Request.Path}");
await _next(context);
_logger.LogInformation($"响应: {context.Response.StatusCode}");
}
}
app.UseMiddleware<LoggingMiddleware>();
四、依赖注入 #
4.1 注册服务 #
csharp
builder.Services.AddTransient<IUserService, UserService>();
builder.Services.AddScoped<IOrderService, OrderService>();
builder.Services.AddSingleton<ICacheService, CacheService>();
4.2 生命周期 #
| 生命周期 | 说明 |
|---|---|
| Transient | 每次请求创建新实例 |
| Scoped | 每个请求一个实例 |
| Singleton | 应用程序生命周期一个实例 |
4.3 使用服务 #
csharp
public class UsersController : ControllerBase
{
private readonly IUserService _userService;
public UsersController(IUserService userService)
{
_userService = userService;
}
[HttpGet("{id}")]
public async Task<ActionResult<User>> GetUser(int id)
{
var user = await _userService.GetByIdAsync(id);
return Ok(user);
}
}
五、Web API #
5.1 创建Controller #
csharp
[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase
{
[HttpGet]
public async Task<ActionResult<IEnumerable<User>>> GetAll()
{
return Ok(await _userService.GetAllAsync());
}
[HttpGet("{id}")]
public async Task<ActionResult<User>> GetById(int id)
{
var user = await _userService.GetByIdAsync(id);
if (user == null) return NotFound();
return Ok(user);
}
[HttpPost]
public async Task<ActionResult<User>> Create([FromBody] CreateUserRequest request)
{
var user = await _userService.CreateAsync(request);
return CreatedAtAction(nameof(GetById), new { id = user.Id }, user);
}
[HttpPut("{id}")]
public async Task<IActionResult> Update(int id, [FromBody] UpdateUserRequest request)
{
await _userService.UpdateAsync(id, request);
return NoContent();
}
[HttpDelete("{id}")]
public async Task<IActionResult> Delete(int id)
{
await _userService.DeleteAsync(id);
return NoContent();
}
}
5.2 最小API #
csharp
var app = builder.Build();
app.MapGet("/api/users", async (IUserService userService) =>
{
return Results.Ok(await userService.GetAllAsync());
});
app.MapGet("/api/users/{id}", async (int id, IUserService userService) =>
{
var user = await userService.GetByIdAsync(id);
return user != null ? Results.Ok(user) : Results.NotFound();
});
app.MapPost("/api/users", async (CreateUserRequest request, IUserService userService) =>
{
var user = await userService.CreateAsync(request);
return Results.Created($"/api/users/{user.Id}", user);
});
六、配置 #
6.1 appsettings.json #
json
{
"Logging": {
"LogLevel": {
"Default": "Information"
}
},
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=MyDb"
},
"JwtSettings": {
"SecretKey": "your-secret-key",
"Issuer": "myapp",
"Audience": "myapp"
}
}
6.2 读取配置 #
csharp
public class JwtSettings
{
public string SecretKey { get; set; }
public string Issuer { get; set; }
public string Audience { get; set; }
}
builder.Services.Configure<JwtSettings>(builder.Configuration.GetSection("JwtSettings"));
public class AuthService
{
private readonly JwtSettings _jwtSettings;
public AuthService(IOptions<JwtSettings> jwtSettings)
{
_jwtSettings = jwtSettings.Value;
}
}
七、总结 #
ASP.NET Core要点:
| 要点 | 说明 |
|---|---|
| 中间件 | 请求处理管道 |
| 依赖注入 | 服务注册与使用 |
| Controller | Web API控制器 |
| 最小API | 简化API开发 |
| 配置 | appsettings.json |
下一步,让我们学习Entity Framework Core!
最后更新:2026-03-26