在ASP.NET Core MVC中,过滤器默认情况下是单例的。这意味着每个过滤器实例将在整个应用程序生命周期中重复使用。
以下是一个具有自定义过滤器的示例代码,以说明过滤器是单例的:
using Microsoft.AspNetCore.Mvc.Filters;
using System;
public class CustomFilter : IActionFilter
{
public void OnActionExecuting(ActionExecutingContext context)
{
Console.WriteLine("Action executing");
}
public void OnActionExecuted(ActionExecutedContext context)
{
Console.WriteLine("Action executed");
}
}
然后,将该自定义过滤器应用于控制器或操作方法:
[CustomFilter]
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
在上述示例中,CustomFilter
过滤器将在每次请求时重复使用,因为它是一个单例。
请注意,如果您想要实现每次请求都使用不同的过滤器实例,您可以使用依赖注入容器来注册您的过滤器,并配置其生命周期为“瞬态”。这将导致容器在每个请求中创建新的过滤器实例。
希望能帮到你!