Api .NET核心审计日志

Api .NET核心审计日志,api,.net-core,audit,Api,.net Core,Audit,我想在.NET核心应用程序中实现审计日志记录。 差不多 [HttpPost, Auditing] public dynamic SomeApiAction() 该属性应该能够在执行前后截获API调用,以便进行日志记录 作为框架的一部分,.NETCore中是否有这样的机制?我不想使用任何第三方组件。 请告知。您可以像这样使用CustomActionFilter public class CustomDemoActionFilter : Attribute, IActionFilter

我想在.NET核心应用程序中实现审计日志记录。 差不多

[HttpPost, Auditing]
public dynamic SomeApiAction()
该属性应该能够在执行前后截获API调用,以便进行日志记录

作为框架的一部分,.NETCore中是否有这样的机制?我不想使用任何第三方组件。
请告知。

您可以像这样使用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
   }
您可以尝试作为框架一部分的库。它提供了一个可配置的基础结构来记录与Asp.NET核心Web API的交互

例如,使用属性:

using Audit.WebApi;

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

你应该指出你是这个框架的作者。是的,我是:)但是如果我这样说有什么区别呢?没关系,但是你应该指出。参见“避免公开的自我推销”: