设为首页 加入收藏

TOP

.Net Core MVC中过滤器简介(二)
2019-09-30 16:48:51 】 浏览:176
Tags:.Net Core MVC 过滤器 简介
{
string header = request.Headers["X-Requested-With"]; return "XMLHttpRequest".Equals(header); } } View Code

定义完ExceptionFilter,该怎么注册到全局呢?在Stratup.cs中ConfigureServer中,进行注册

services.AddMvc(o =>
{
    o.Filters.Add(typeof(CustomExceptionFilterAttribute));// 这里就是全局注册Filter

}).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

Action 过滤器,包装了对单个Action方法的调用,可以将参数传递给Action并从中获得Action Result。继承IActionFilter

 /// <summary>
 /// Action的Filter`
 /// </summary>
 public class CustomActionFilterAttribute : Attribute, IActionFilter
 {
     private ILogger<CustomActionFilterAttribute> _logger = null;
     public CustomActionFilterAttribute(ILogger<CustomActionFilterAttribute> logger)
     {
         this._logger = logger;
     } 
     public void OnActionExecuted(ActionExecutedContext context)
     {
         //context.HttpContext.Response.WriteAsync("ActionFilter Executed!");
         Console.WriteLine("ActionFilter Executed!");
         //this._logger.LogDebug("ActionFilter Executed!");
     } 
     public void OnActionExecuting(ActionExecutingContext context)
     {
         //context.HttpContext.Response.WriteAsync("ActionFilter Executing!");
         Console.WriteLine("ActionFilter Executing!");
         //this._logger.LogDebug("ActionFilter Executing!");
     }
 }

在Startup.cs中ConfigureServices进行注册

 //允许使用ServiceFilter 标记特性
 services.AddScoped<CustomActionFilterAttribute>();

标记到Controller的ActionFilter

/// <summary>
/// 标记到Controller
/// </summary>
public class CustomControllerActionFilterAttribute : Attribute, IActionFilter
{
    private ILogger<CustomControllerActionFilterAttribute> _logger = null;
    public CustomControllerActionFilterAttribute(ILogger<CustomControllerActionFilterAttribute> logger)
    {
        this._logger = logger;
    }
    public void OnActionExecuted(ActionExecutedContext context)
    {
        //context.HttpContext.Response.WriteAsync("ActionFilter Executed!");
        Console.WriteLine("ActionFilter Executed!");
        //this._logger.LogDebug("ActionFilter Executed!");
    }
    public void OnActionExecuting(ActionExecutingContext context)
    {
        //context.HttpContext.Response.WriteAsync("ActionFilter Executing!");
        Console.WriteLine("ActionFilter Executing!");
        //this._logger.LogDebug("ActionFilter Executing!");
    }
}
 [TypeFilter(typeof(CustomControllerActionFilterAttribute),Order =-1)]
 public class ThirdController : Controller
 {
}

注册到全局的ActionFilter

public class CustomGlobalActionFilterAttribute : Attribute, IActionFilter
{
    private ILogger<CustomGlobalActionFilterAttribute> _logger = null;
    public CustomGlobalActionFilterAttribute(ILogger<CustomGlobalActionFilterAttribute> logger)
    {
        this._logger = logger;
    }
    public void OnActionExecuted(ActionExecutedContext context)
    {
        //context.HttpContext.Response.WriteAsync("ActionFilter Executed!");
        Console.WriteLine("ActionFilter Executed!");
        //this._logger.LogDebug("ActionFilter Executed!");
    }
    public void OnActionExecuting(ActionExecutingContext context
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇.Net Core权限认证基于Cookie的认.. 下一篇net core WebApi——定时任务Quar..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目