Asp.net mvc Autofac注入到自定义Web Api FilterAttribute

Asp.net mvc Autofac注入到自定义Web Api FilterAttribute,asp.net-mvc,asp.net-web-api,inversion-of-control,autofac,Asp.net Mvc,Asp.net Web Api,Inversion Of Control,Autofac,我有一个自定义ExceptionFilter,它记录Web Api控制器中所有未捕获的异常。我想使用Autofac,向它注入ILog配置 我的问题是如何做到这一点?Autofac网站几乎没有解释如何做到这一点 自定义筛选器: public class ApiControllerErrorFilterAttribute : ExceptionFilterAttribute { private static readonly ILog log = LogManager.GetLogger("

我有一个自定义ExceptionFilter,它记录Web Api控制器中所有未捕获的异常。我想使用Autofac,向它注入ILog配置

我的问题是如何做到这一点?Autofac网站几乎没有解释如何做到这一点

自定义筛选器:

public class ApiControllerErrorFilterAttribute : ExceptionFilterAttribute
{
    private static readonly ILog log = LogManager.GetLogger("ApiLog");
    public override void OnException(HttpActionExecutedContext actionExecutedContext)
    {
        log.Error("Error: ", actionExecutedContext.Exception);
    }
}
p、 美国。 为了澄清,我还为普通控制器定制了一个过滤器,并且我能够成功地配置它

正常控制器的过滤器:

public class ControllerErrorFilterAttribute : HandleErrorAttribute
{
    public ICustomLogSettings Log { get; set; }
    public override void OnException(ExceptionContext filterContext)
    {
        Log.GetLogger.Error("Error: ", filterContext.Exception);
    }
}
日志配置:

    builder.Register(c => new BaseLog()).As<ICustomLogSettings>().InstancePerRequest();
    builder.RegisterFilterProvider();
builder.Register(c=>newbaselog()).As().InstancePerRequest();
builder.RegisterFilterProvider();
有些可能会有所帮助,尤其是:

builder.registerWebAPI过滤器提供程序(GlobalConfiguration.Configuration);
注册(c=>newmywebapifilter())
.AsWebApiActionFilterFor()
.InstancePerApiRequest();
从这一点上,它向我展示了您可以注册一个过滤器,该过滤器可以像任何其他服务一样得到解决,这意味着您应该能够做到:

公共类ApiControllerErrorFilterAttribute:ExceptionFilterAttribute
{
专用只读ILog\u日志
公共ApiControllerErrorFilterAttribute(ILog日志)
{
_log=log;
}
public override void OneException(HttpActionExecuteContext ActionExecuteContext)
{
_log.Error(“错误:”,ActionExecuteContext.Exception);
}
}
然后可以这样注册:


builder.RegisterType.

必须将IautoFaceExceptionFilter接口添加到我的过滤器中,并将AsWebApiationFilterFor更改为AsExceptionFilterFor,但除此之外,它的工作就像一个符咒。谢谢