.NET Core 审计日志

.NET Core Audit Logging

我想在我的 .NET Core 应用程序中实现审计日志记录。 像

[HttpPost, Auditing]
public dynamic SomeApiAction()
{
    // API code here
    ... 
}

属性应该能够在执行前后拦截API调用以便记录。

.net core 中是否有任何此类机制作为框架的一部分可用?我不想使用任何第三方组件。 请指教

您可以像这样使用 CustomActionFilter

public class CustomDemoActionFilter : Attribute, IActionFilter
{
    public void OnActionExecuting(ActionExecutingContext context)
    {
       
        var controller = context.Controller as Controller;
        if (controller == null) return;
        var controllerName = context.RouteData.Values["controller"];
        var actionName = context.RouteData.Values["action"];
        var message = String.Format("{0} controller:{1} action:{2}", "onactionexecuting", controllerName, actionName);
        var CurrentUrl = "/" + controllerName + "/" + actionName;

       bool IsExists = false;
       if(CurrentUrl=="/Home/Index")
       {
           IsExists=true;
       }
       else
       {
           IsExists=false;
       }           
      
        if (IsExists)
        {
          //do your conditional coding here.
          //context.Result = new RedirectToRouteResult(new RouteValueDictionary { { "controller", "Home" }, { "action", "Index" } });
        }
        else
        {
          //else your error page
            context.Result = new RedirectToRouteResult(new RouteValueDictionary { { "controller", "Home" }, { "action", "Error" } });
        }
        //base.OnActionExecuting(context);
    }


    public void OnActionExecuted(ActionExecutedContext context)
    {
      
    }
}

并且只需将此 customactionfilter 用作您的操作方法的属性,例如

[HttpGet]
[CustomHMISActionFilter]
public IActionResult Registration()
{
  //your code here
}

你可以试试Audit.WebApi library which is part of Audit.NET框架。它提供了一个可配置的基础架构来记录与您的 Asp.NET Core Web API.

的交互

例如使用属性:

using Audit.WebApi;

public class UsersController : ApiController
{
    [HttpPost]
    [AuditApi(IncludeHeaders = true)]
    public IHttpActionResult Post()
    {
      //...
    }
}