ASP.NET Core的基础功能覆盖了Web应用开发的核心流程,其中路由、静态文件、身份验证和自定义中间件是构建完整应用必不可少的组成部分,下面逐一介绍这些功能的实现方式。

路由配置
路由是ASP.NET Core中将传入请求映射到对应处理程序的核心机制,默认使用终结点路由系统,我们可以在Program.cs中进行配置。
首先是最基础的约定路由配置,示例代码如下:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
// 配置约定路由,{controller}和{action}是路由参数,{id?}表示可选参数
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();如果需要配置属性路由,可以在控制器的方法上使用Route特性,示例如下:
using Microsoft.AspNetCore.Mvc;
[Route("api/[controller]")]
public class UserController : ControllerBase
{
[HttpGet("get/{id}")]
public IActionResult GetUser(int id)
{
return Ok($"用户ID:{id}");
}
}静态文件托管
静态文件包括图片、CSS、JavaScript等不需要服务器处理的资源,ASP.NET Core默认不会对外提供静态文件,需要手动开启静态文件中间件。
首先需要在项目中创建wwwroot文件夹,将静态文件放到该目录下,然后在Program.cs中添加静态文件中间件:
var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); // 启用静态文件中间件,默认从wwwroot目录读取文件 app.UseStaticFiles(); app.Run();
如果需要自定义静态文件目录,可以通过StaticFileOptions配置,示例如下:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
// 自定义静态文件目录,这里将静态文件放在项目根目录的static文件夹下
var staticDir = Path.Combine(Directory.GetCurrentDirectory(), "static");
if (!Directory.Exists(staticDir))
{
Directory.CreateDirectory(staticDir);
}
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new Microsoft.Extensions.FileProviders.PhysicalFileProvider(staticDir),
RequestPath = "/static"
});
app.Run();配置完成后,访问/static/文件名就可以获取到对应静态文件。
身份验证实现
身份验证用于验证请求方的身份,ASP.NET Core提供了灵活的身份验证体系,我们可以基于Cookie或者JWT等方式实现。
以下是基于Cookie的身份验证配置示例,首先在Program.cs中添加身份验证服务:
var builder = WebApplication.CreateBuilder(args);
// 添加Cookie身份验证服务
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.LoginPath = "/Account/Login"; // 未登录时跳转的登录页
options.AccessDeniedPath = "/Account/Denied"; // 无权限时跳转的页面
options.ExpireTimeSpan = TimeSpan.FromHours(2); // Cookie过期时间
});
var app = builder.Build();
// 启用身份验证中间件
app.UseAuthentication();
// 启用授权中间件,用于验证用户是否有权限访问资源
app.UseAuthorization();
app.Run();在需要验证的控制器或者方法上添加Authorize特性即可限制访问:
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
[Authorize] // 整个控制器都需要身份验证
public class OrderController : Controller
{
public IActionResult Index()
{
return View();
}
}
public class ProductController : Controller
{
[Authorize] // 仅该方法需要身份验证
public IActionResult Detail()
{
return View();
}
}自定义中间件开发
中间件是ASP.NET Core请求处理管道中的组件,每个中间件都可以处理请求、修改响应或者将请求传递给下一个中间件。我们可以自定义中间件来实现特定的请求处理逻辑。
自定义中间件可以是一个普通的类,需要满足以下条件:包含InvokeAsync方法,构造函数接收RequestDelegate参数。示例如下:
using Microsoft.AspNetCore.Http;
public class RequestLogMiddleware
{
private readonly RequestDelegate _next;
public RequestLogMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
// 请求处理前的逻辑,这里记录请求路径和时间
var requestPath = context.Request.Path;
var requestTime = DateTime.Now;
Console.WriteLine($"请求路径:{requestPath},请求时间:{requestTime}");
// 将请求传递给下一个中间件
await _next(context);
// 请求处理后的逻辑,这里记录响应状态码
var responseStatusCode = context.Response.StatusCode;
Console.WriteLine($"响应状态码:{responseStatusCode}");
}
}然后需要编写一个扩展方法来注册中间件:
using Microsoft.AspNetCore.Builder;
public static class RequestLogMiddlewareExtensions
{
public static IApplicationBuilder UseRequestLog(this IApplicationBuilder builder)
{
return builder.UseMiddleware<RequestLogMiddleware>();
}
}最后在Program.cs中使用该中间件:
var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); // 使用自定义请求日志中间件 app.UseRequestLog(); app.Run();
这样每个请求都会经过该中间件,记录请求和响应的相关信息。
ASP.NET_Core路由配置静态文件身份验证自定义中间件修改时间:2026-06-04 14:49:40