升级NServiceBus后出现AutoFac异常

时间:2015-01-20 09:02:46

标签: nservicebus autofac

我刚刚将NServiceBus从4.6升级到5.0

我做了“4到5”文档中建议的步骤,并且能够编译。现在我收到以下错误:

  

没有找到的构造函数   类型上的'Autofac.Core.Activators.Reflection.DefaultConstructorFinder'   'Nop.Web.Controllers.ShoppingCartController'可以用。调用   可用的服务和参数:无法解析参数   'NServiceBus.IBus总线'的构造函数'Void .ctor(NServiceBus.IBus,...

必须做什么?

(更新:我的配置)

public static class ServiceBus
    {
        public static void Init(ILifetimeScope scope)
        {

            var configuration = new BusConfiguration();
            configuration.EndpointName(ConfigurationManager.AppSettings["ServiceBusEndpointName"]);
            configuration.UseTransport<MsmqTransport>();
            configuration.UseSerialization<JsonSerializer>();
            configuration.UsePersistence<RavenDBPersistence>();
            configuration.DisableFeature<Sagas>();
            configuration.Transactions().Enable();
            configuration.AssembliesToScan(AllAssemblies
                .Matching("Nop.Services.dll")
                .And("TengoMessages.dll")
                .And("Partner.Pricing.Messages.dll")
                .And("Partner.Pricing.Infrastructure.dll"));
            configuration.UseContainer<AutofacBuilder>();
            configuration.PurgeOnStartup(false);

            var bus  = Bus.Create(configuration);
            bus.Start();


            var newBuilder = new ContainerBuilder();
            newBuilder.RegisterInstance(bus);
            newBuilder.Update(Singleton<IContainer>.Instance);        
        }

1 个答案:

答案 0 :(得分:0)

我不使用AutoFac,所以我不熟悉ContainerBuilder概念,但看起来你想使用带有NServiceBus的现有容器?

首先创建容器的实例,然后更改配置代码以使用:

configuration.UseContainer<AutofacBuilder>(customizations =>
 customizations.ExistingContainer(container));

看起来倒数第二行的代码是注册总线 - 这不是必需的,因为上面的代码将确保所有与NSB相关的类都能正确注册。