我刚刚将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);
}
答案 0 :(得分:0)
我不使用AutoFac,所以我不熟悉ContainerBuilder概念,但看起来你想使用带有NServiceBus的现有容器?
首先创建容器的实例,然后更改配置代码以使用:
configuration.UseContainer<AutofacBuilder>(customizations =>
customizations.ExistingContainer(container));
看起来倒数第二行的代码是注册总线 - 这不是必需的,因为上面的代码将确保所有与NSB相关的类都能正确注册。