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();
...
}