Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Microsoft.AspNetCore.Mvc.Filters.ActionFilterAttribute如何使用记录器(c#)_C#_Logging_Actionfilterattribute - Fatal编程技术网

Microsoft.AspNetCore.Mvc.Filters.ActionFilterAttribute如何使用记录器(c#)

Microsoft.AspNetCore.Mvc.Filters.ActionFilterAttribute如何使用记录器(c#),c#,logging,actionfilterattribute,C#,Logging,Actionfilterattribute,我有课: public class GeoSalesLogger : ActionFilterAttribute { private Stopwatch timer; private Request Argument; public ILogger logger { get; set; } public GeoSalesLogger() { } public GeoSalesLogger(ILogger<Geo

我有课:

 public class GeoSalesLogger : ActionFilterAttribute
  {
       private Stopwatch timer;
       private Request Argument;

    public ILogger logger { get; set; }

    public GeoSalesLogger()
    {
    }

    public GeoSalesLogger(ILogger<GeoSalesLogger> logger)
    {
        logger = logger;
    }

    public override void OnActionExecuting(ActionExecutingContext filterContext){}
    public override void OnActionExecuted(ActionExecutedContext filterContext){}
  }
公共类GeoSalesLogger:ActionFilterAttribute
{
私人秒表计时器;
私人请求论证;
公共ILogger记录器{get;set;}
公共地理坐标记录器()
{
}
公共地理记录器(ILogger记录器)
{
记录器=记录器;
}
公共重写无效OnActionExecuting(ActionExecutingContext filterContext){}
公共重写无效OnActionExecuted(ActionExecutedContext筛选器上下文){}
}
接下来我调用其他类[GeoSalesLogger]

问题:我如何在这里添加ILogger,因为我不能在构造函数中添加它。我也试着用autofuc

builder.RegisterType<GeoLogger>();
builder.RegisterFilterProvider();
builder.RegisterType();
builder.RegisterFilterProvider();

DependencyResolver.Current.GetService();

如何在没有静态的情况下获取ILogger?

您需要使用
ActionExecutingContext
解析
ActionFilterAttribute
的记录器

public override void OnActionExecuting(ActionExecutingContext context)
{
    var logger = context.HttpContext.RequestServices.GetRequiredService<ILogger<GeoSalesLogger>>();
    ...
}
public override void OnActionExecuting(ActionExecutingContext上下文)
{
var logger=context.HttpContext.RequestServices.GetRequiredService();
...
}

您需要使用
ActionExecutingContext
解析
ActionFilterAttribute
的记录器

public override void OnActionExecuting(ActionExecutingContext context)
{
    var logger = context.HttpContext.RequestServices.GetRequiredService<ILogger<GeoSalesLogger>>();
    ...
}
public override void OnActionExecuting(ActionExecutingContext上下文)
{
var logger=context.HttpContext.RequestServices.GetRequiredService();
...
}