C# Autofac属性注入不工作

C# Autofac属性注入不工作,c#,asp.net-web-api,autofac,C#,Asp.net Web Api,Autofac,我检查了这些答案: 但是,我的代码看起来设置正确,但属性注入不起作用 这是我的Autofac注册: public static AutofacWebApiDependencyResolver Setup() { var config = GlobalConfiguration.Configuration; var builder = new ContainerBuilder(); builder.Register(x => new LogService()

我检查了这些答案:

但是,我的代码看起来设置正确,但属性注入不起作用

这是我的Autofac注册:

public static AutofacWebApiDependencyResolver Setup()
{
    var config = GlobalConfiguration.Configuration;
    var builder = new ContainerBuilder();

    builder.Register(x => new LogService())
        .As<ILogService>()
        .SingleInstance();

    builder.RegisterType<ExceptionHandlingAttribute>().PropertiesAutowired();

    var container = builder.Build();
    var resolver = new AutofacWebApiDependencyResolver(container);

    GlobalConfiguration.Configuration.DependencyResolver = resolver;
}
但是,logService为null。有什么问题

编辑

我根据下面的注释更改了属性,因此属性类现在如下所示:

internal class ExceptionHandlingAttribute : IAutofacExceptionFilter
{
    public ILogService logService { get; set; }

    public void OnException(HttpActionExecutedContext filterContext) { }
}
builder.RegisterWebApiFilterProvider(config);

builder.RegisterType<ExceptionHandlingAttribute>()
    .AsWebApiExceptionFilterFor<BaseODataController>()
    .InstancePerRequest()
    .PropertiesAutowired();
我还必须删除添加到WebApiConfig中config.Filters的过滤器

我更改了Autofac注册,如下所示:

internal class ExceptionHandlingAttribute : IAutofacExceptionFilter
{
    public ILogService logService { get; set; }

    public void OnException(HttpActionExecutedContext filterContext) { }
}
builder.RegisterWebApiFilterProvider(config);

builder.RegisterType<ExceptionHandlingAttribute>()
    .AsWebApiExceptionFilterFor<BaseODataController>()
    .InstancePerRequest()
    .PropertiesAutowired();
builder.registerWebAPI过滤器提供程序(配置);
builder.RegisterType()
.aswebapieexceptionfilterfor()
.InstancePerRequest()
.属性自动连线();
但是,现在我遇到了以下异常(可能是Autofac试图定位过滤器):

对象引用未设置为对象的实例。“,”类型“:”System.NullReferenceException“,”stacktrace“:”位于Autofac.Integration.WebApi.AutofacWebApiFilterProvider.GetFilters(HttpConfiguration配置,HttpActionDescriptor actionDescriptor)\r\n位于System.Web.Http.Controllers.HttpActionDescriptor.b\u 0(IFilterProvider fp)\r\n位于System.Linq.Enumerable.d_u14`2.MoveNext()\r\n

等等等。

Autofac不会在web.api中插入操作过滤器。您需要使用文档中描述的自定义
IAutofacExceptionFilter