行动过滤器是实现IActionFilter或继承ActionFilterAttribute的类,用于在动作方法执行前后插入逻辑。通过OnActionExecuting和OnActionExecuted方法,可实现日志记录、权限验证、参数校验和结果修改。例如,LogActionFilter使用Stopwatch记录执行时间。过滤器可应用于单个控制器或方法,也可在Program.cs中全局注册。典型应用场景包括权限检查、模型验证、性能监控和统一响应包装。合理使用可提升代码复用性和可维护性,但应避免在过滤器中执行耗时操作以免影响性能。

在 ASP.NET Core 中,行动过滤器(Action Filter)用于在控制器的某个动作方法执行前后插入自定义逻辑。它适用于日志记录、权限验证、参数校验、结果修改等场景。理解并正确使用行动过滤器可以提升代码的可维护性和复用性。
行动过滤器是实现 IActionFilter 或继承 ActionFilterAttribute 的类,它允许你在动作方法执行前和执行后运行代码。ASP.NET Core 提供了多个过滤器接口,而行动过滤器主要关注的是 OnActionExecuting 和 OnActionExecuted 两个方法:
下面是一个简单的示例,展示如何创建一个记录请求时间的行动过滤器:
using Microsoft.AspNetCore.Mvc.Filters;
using System.Diagnostics;
public class LogActionFilter : ActionFilterAttribute
{
private Stopwatch _stopwatch;
public override void OnActionExecuting(ActionExecutingContext context)
{
_stopwatch = Stopwatch.StartNew();
Console.WriteLine($"开始执行动作: {context.ActionDescriptor.DisplayName}");
}
public override void OnActionExecuted(ActionExecutedContext context)
{
_stopwatch?.Stop();
Console.WriteLine($"动作执行完成,耗时: {_stopwatch.ElapsedMilliseconds}ms");
}
}
行动过滤器可以在多个级别注册,控制其作用范围:
[LogActionFilter]
public class HomeController : Controller
{
[HttpGet]
public IActionResult Index()
{
return View();
}
}
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews(options =>
{
options.Filters.Add<LogActionFilter>();
});
行动过滤器适合处理横切关注点。几个典型用途包括:
基本上就这些。掌握行动过滤器的使用,能让控制器更干净,通用逻辑更容易集中管理。注意不要在过滤器中做太重的操作,避免影响整体性能。
以上就是ASP.NET Core 中的行动过滤器如何使用?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号