【发布时间】:2020-05-12 04:28:05
【问题描述】:
static IHostBuilder CreateHostBuilder(string[] args)
{
return Host.CreateDefaultBuilder(args)
.UseWindowsService()
.UseNServiceBus(ctx =>
{
var endpointConfiguration = new EndpointConfiguration("bindingName");
var containerSettings = endpointConfiguration.UseContainer(new WindsorServiceProviderFactory());
containerSettings.ConfigureContainer(c => ConfigureCastleWindsor(c));
endpointConfiguration.SendFailedMessagesTo("error");
endpointConfiguration.AuditProcessedMessagesTo("audit");
endpointConfiguration.EnableInstallers();
return endpointConfiguration;
});
}
private static IWindsorContainer ConfigureCastleWindsor(IWindsorContainer c)
{
return c.Register(Component.For<DbStore>()
.DependsOn(Dependency.OnValue("Connection", ConfigurationManager.ConnectionStrings["name"].ConnectionString))
.LifeStyle.PerThread,
Component.For<IManageUnitsOfWork>().ImplementedBy<LinqUnitOfWork>().LifestyleTransient(),
Component.For<IMapper>().UsingFactoryMethod(x => new Mapper(ContractAutoMapper.Start())).LifestyleSingleton());
}
我正在引用 Nservice Bus 文档链接 (https://docs.particular.net/nservicebus/dependency-injection/castlewindsor) 以在 Nservice Bus 7.2.3 + NServiceBus.Extensions.Hosting 中将第三方城堡 Windsor 实现为 DI。
包裹信息:
- 主机窗口服务包 - NServiceBus.Extensions.Hosting.1.0.1
- NServiceBus.Extensions.DependencyInjection (1.0.1)
- Castle.Core (4.2.0)
- 温莎城堡 (4.1.1)
- Castle.Windsor.MsDependencyInjection (3.0.0)
- NServiceBus.CastleWindsor (7.0.0)
注意:第三方温莎城堡采用内部管理模式
错误信息:已使用“EndpointConfiguration.UseContainer”配置了内部管理的容器。不能同时使用内部管理的容器和外部管理的容器。
堆栈跟踪: NServiceBus.ContainerComponent.InitializeWithExternallyManagedContainer(IConfigureComponents configureComponents)
at NServiceBus.EndpointCreator.CreateWithExternallyManagedContainer(EndpointConfiguration endpointConfiguration, IConfigureComponents configureComponents)
at NServiceBus.HostBuilderExtensions.<>c__DisplayClass0_0.<UseNServiceBus>b__0(HostBuilderContext ctx, IServiceCollection serviceCollection)
at Microsoft.Extensions.Hosting.HostBuilder.CreateServiceProvider()
at Microsoft.Extensions.Hosting.HostBuilder.Build()
at Report.Program.Main(String[] args)
我没有使用任何外部管理器模式,但仍然运行时出现此错误,请您告诉我们如何使用第三方 Castle Windsor 作为 DI。
【问题讨论】:
标签: windows-services hosting nservicebus