Asp.net web api Autofac RegisterAssemblyModule引发Autofac.Core.DependencyResolutionException异常

Asp.net web api Autofac RegisterAssemblyModule引发Autofac.Core.DependencyResolutionException异常,asp.net-web-api,asp.net-web-api2,autofac,autofac-module,autofac-configuration,Asp.net Web Api,Asp.net Web Api2,Autofac,Autofac Module,Autofac Configuration,我有一个使用Autofac的WebAPI 2。下面的代码可以工作,但注册SemblyModule抛出依赖解析异常 builder.RegisterModule<InfrastructureBootstrapper>(); //works builder.RegisterModule<LoggingBootstrapper>(); builder.RegisterModule<AppServicesBootstrapper>(); bu

我有一个使用Autofac的WebAPI 2。下面的代码可以工作,但注册SemblyModule抛出依赖解析异常

    builder.RegisterModule<InfrastructureBootstrapper>(); //works
    builder.RegisterModule<LoggingBootstrapper>();
    builder.RegisterModule<AppServicesBootstrapper>();
builder.RegisterModule()//作品
builder.RegisterModule();
builder.RegisterModule();
WebAPI 2

public static IContainer RegisterTypes()
    {
        var builder = new ContainerBuilder();

        //throws DependencyResolutionException
        builder.RegisterAssemblyModules(AppDomain.CurrentDomain.GetAssemblies());

        //Below works
        //builder.RegisterModule<InfrastructureBootstrapper>();   
        //builder.RegisterModule<LoggingBootstrapper>();
        //builder.RegisterModule<AppServicesBootstrapper>();
        ...
        builder.RegisterApiControllers(Assembly.GetExecutingAssembly()).InstancePerRequest();

        var container = builder.Build();
        container.Resolve<HttpConfiguration>().DependencyResolver = new AutofacWebApiDependencyResolver(container);

        return container;
    }
publicstaticicontainer注册表类型()
{
var builder=new ContainerBuilder();
//抛出DependencyResolutionException
registerasemblymodules(AppDomain.CurrentDomain.GetAssemblies());
//下面的作品
//builder.RegisterModule();
//builder.RegisterModule();
//builder.RegisterModule();
...
RegisterAppController(Assembly.getExecutionGassembly()).InstancePerRequest();
var container=builder.Build();
container.Resolve().DependencyResolver=新的AutoFacWebApidencyResolver(容器);
返回容器;
}
基础架构引导程序

public class InfrastructureBootstrapper: Module
    {
        protected override void Load(ContainerBuilder builder)
        {
            base.Load(builder);
            builder.RegisterType<Config>().As<IConfig>();
        }
    }
公共类基础结构引导程序:模块
{
受保护的覆盖无效负载(ContainerBuilder builder)
{
基础荷载(建筑商);
builder.RegisterType().As();
}
}
更新如下:
日志引导程序

  public class LoggingBootstrapper: Module
    {
        protected override void Load(ContainerBuilder builder)
        {
            base.Load(builder);

            builder.Register(x => NLog.LogManager.GetCurrentClassLogger()).As<IFileLogger>().SingleInstance();
            builder.RegisterType<Logger>().As<ILogger>();

        }
    }
公共类日志引导程序:模块
{
受保护的覆盖无效负载(ContainerBuilder builder)
{
基础荷载(建筑商);
Register(x=>NLog.LogManager.GetCurrentClassLogger()).As().SingleInstance();
builder.RegisterType().As();
}
}
所有项目都使用下面的代码

 <package id="Autofac" version="4.6.2" targetFramework="net452" />

信息: .net 4.5.2、WebAPI 2、Owin主机和通过Topshelf提供的Windows服务

客户api控制器使用承包商依赖项注入。注入未解决依赖关系,因此出现以下异常:

   Unhandled Exception: Autofac.Core.DependencyResolutionException: An error occurr
    ed during the activation of a particular registration. See the inner exception f
    or details. Registration: Activator = Service (ReflectionActivator), Services =
    [Game.MPC2.RXS.Api.HostServices.IService], Lifetime = Autofac.Core.
    Lifetime.RootScopeLifetime, Sharing = Shared, Ownership = OwnedByLifetimeScope -
    --> None of the constructors found with 'Autofac.Core.Activators.Reflection.Defa
    ultConstructorFinder' on type 'Game.MPC2.RXS.Api.HostServices.Servi
    ce' can be invoked with the available services and parameters:
    Cannot resolve parameter 'Game.MPC2.RXS.Logging.ILogger logger' of
    constructor 'Void .ctor(Game.MPC2.RXS.Logging.ILogger, Game.MP
    C2.RXS.Api.HostServices.IWebServer)'. (See inner exception for details.)
     ---> Autofac.Core.DependencyResolutionException: None of the constructors found
     with 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' on type 'Roy
    alMail.MPC2.RXS.Api.HostServices.Service' can be invoked with the availa
    ble services and parameters:
    Cannot resolve parameter 'Game.MPC2.RXS.Logging.ILogger logger' of
    constructor 'Void .ctor(Game.MPC2.RXS.Logging.ILogger, Game.MP
    C2.RXS.Api.HostServices.IWebServer)'.
       at Autofac.Core.Activators.Reflection.ReflectionActivator.GetValidConstructor
    Bindings(IComponentContext context, IEnumerable`1 parameters)
       at Autofac.Core.Activators.Reflection.ReflectionActivator.ActivateInstance(IC
    omponentContext context, IEnumerable`1 parameters)
       at Autofac.Core.Resolving.InstanceLookup.Activate(IEnumerable`1 parameters)
       --- End of inner exception stack trace ---
       at Autofac.Core.Resolving.InstanceLookup.Activate(IEnumerable`1 parameters)
       at Autofac.Core.Resolving.InstanceLookup.<Execute>b__5_0()
       at Autofac.Core.Lifetime.LifetimeScope.GetOrCreateAndShare(Guid id, Func`1 cr
    eator)
       at Autofac.Core.Resolving.InstanceLookup.Execute()
       at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifeti
    meScope currentOperationScope, IComponentRegistration registration, IEnumerable`
    1 parameters)
       at Autofac.Core.Resolving.ResolveOperation.Execute(IComponentRegistration reg
    istration, IEnumerable`1 parameters)
       at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(IComponentRegistratio
    n registration, IEnumerable`1 parameters)
       at Autofac.Core.Container.ResolveComponent(IComponentRegistration registratio
    n, IEnumerable`1 parameters)
       at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context,
    Service service, IEnumerable`1 parameters, Object& instance)
       at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Ser
    vice service, IEnumerable`1 parameters)
       at Autofac.ResolutionExtensions.Resolve[TService](IComponentContext context,
    IEnumerable`1 parameters)
       at Autofac.ResolutionExtensions.Resolve[TService](IComponentContext context)
       at Game.MPC2.RXS.Host.Program.Main(String[] args) in C:\_Code\Ro
    yalMail.MPC2.RedX.Service\src\Game.MPC2.RXS.Host\Program.cs:line 17
未处理的异常:Autofac.Core.dependencResolutionException:发生错误
在特定注册的激活过程中被删除。请参见内部异常f
或细节。注册:激活器=服务(反射激活器),服务=
[Game.MPC2.RXS.Api.HostServices.IService],life=Autofac.Core。
Lifetime.RootScopeLifetime,共享=共享,所有权=OwnedByLifetimeScope-
-->未找到具有“Autofac.Core.Activators.Reflection.Defa”的构造函数
ultConstructorFinder“on type”Game.MPC2.RXS.Api.HostServices.Servi
可以使用可用的服务和参数调用“ce”:
无法解析的参数“Game.MPC2.RXS.Logging.ILogger logger”
构造函数的Void.ctor(Game.MPC2.RXS.Logging.ILogger,Game.MP
C2.RXS.Api.HostServices.IWebServer。(有关详细信息,请参见内部异常。)
--->Autofac.Core.DependencyResolutionException:未找到任何构造函数
在类型“Roy”上使用“Autofac.Core.Activators.Reflection.DefaultConstructorFinder”
可以使用availa调用alMail.MPC2.RXS.Api.HostServices.Service
可编程服务和参数:
无法解析的参数“Game.MPC2.RXS.Logging.ILogger logger”
构造函数的Void.ctor(Game.MPC2.RXS.Logging.ILogger,Game.MP
C2.RXS.Api.HostServices.IWebServer。
在Autofac.Core.Activators.Reflection.ReflectionActivator.GetValidConstructor上
绑定(IComponentContext上下文,IEnumerable`1参数)
在Autofac.Core.Activators.Reflection.ReflectionActivator.ActivateInstance(IC
组件上下文上下文,IEnumerable`1参数)
在Autofac.Core.Resolving.InstanceLookup.Activate(IEnumerable`1参数)处
---内部异常堆栈跟踪的结束---
在Autofac.Core.Resolving.InstanceLookup.Activate(IEnumerable`1参数)处
在Autofac.Core.Resolving.InstanceLookup.b_uu5_0()中
在Autofac.Core.Lifetime.LifetimeScope.GetOrCreateAndShare(Guid id,Func`1)中
伊托尔)
在Autofac.Core.Resolving.InstanceLookup.Execute()处
在Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifeti)中
meScope currentOperationScope,iComponent注册,IEnumerable`
1)参数
在Autofac.Core.Resolving.ResolveOperation.Execute(IComponentRegistration注册表
ISTRITION,IEnumerable`1参数)
在Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(IComponentRegistration)上
n注册,IEnumerable`1参数)
在Autofac.Core.Container.ResolveComponent(IComponentRegistration)上
n、 IEnumerable`1参数)
在Autofac.ResolutionExtensions.TryResolveService(IComponentContext)中,
服务,IEnumerable`1参数,对象和实例)
在Autofac.ResolutionExtensions.ResolveService(IComponentContext上下文,Ser
副服务,IEnumerable`1参数)
在Autofac.ResolutionExtensions.Resolve[TService](IComponentContext)中,
IEnumerable`1参数)
在Autofac.ResolutionExtensions.Resolve[TService](IComponentContext上下文)
在C:\\ u Code\Ro中的Game.MPC2.RXS.Host.Program.Main(字符串[]args)处
yalMail.MPC2.RedX.Service\src\Game.MPC2.RXS.Host\Program.cs:第17行

能否包含完整的堆栈跟踪和异常的错误消息?请检查更新的帖子。检查此链接号。首先,它是通过Owin托管的,而不是IIS。其次,AppDomain.CurrentDomain.getAssemblys()返回所有程序集。看起来
ILogger
未注册。
LoggingBootstrapper
是公共类吗?你能分享一下它的代码吗?