ActionFilterAttribute

最近在工作時看到看到一個寫Log的寫法 利用ActionFilterAttribute Filter擴充

ActionFilterAttribute 是 ASP.NET Core 中的一種篩選器,用於在執行控制器動作(Action)前後執行某些程式碼。它是用於對控制器動作進行前置和後置處理的一種機制,例如日誌記錄、授權檢查、輸入驗證等。

在 ASP.NET Core 中,ActionFilterAttribute 是一個抽象基類,你可以通過繼承它來創建自定義的動作篩選器。它包含了兩個主要的方法:

  1. OnActionExecuting:在執行控制器動作之前執行的程式碼應該放在這個方法中。
  2. OnActionExecuted:在執行控制器動作之後執行的程式碼應該放在這個方法中。

你可以通過覆寫這兩個方法來實現你自己的前置和後置處理邏輯。

下面是一個簡單的範例,展示如何創建一個自定義的 AutoLogFilterAttribute

using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.Extensions.Logging;

public class AutoLogFilterAttribute : ActionFilterAttribute
{
    protected readonly ILogger<AutoLogFilterAttribute > _logger;
    
    public AutoLogFilterAttribute (ILogger<AuditLogFilterMonoAttribute> logger){
        _logger = logger;
                
    }
    //執行前
    public override void OnActionExecuting(ActionExecutingContext context)
    {
        //todo
    }
    
    //執行後
    public override void OnResultExecuted(ResultExecutedContext context)     {
         //todo
    }
}

在這個範例中,我們創建了一個名為 AutoLogFilterAttribute 的自定義動作篩選器,並覆寫了 OnActionExecutingOnActionExecuted 方法來記錄執行控制器動作的相關信息。

留言

這個網誌中的熱門文章

無法載入檔案或組件 'System.IO.Compression' 或其相依性的其中之一。

MongoDB 入門

javascript 更改屬性及創建標籤