Nservicebus unity Endpoint启动失败

Nservicebus unity Endpoint failed to start

使用 .NET 4.5.2,Visual studio 2017,C# 7.1,Unity,NServiceBus 6。

我收到以下错误:

我的应用程序是一个控制台应用程序,下面是一些 Program.cs 代码:

private static async Task ConfigureUnity()
    {
        IUnityContainer container = new UnityContainer();

        var endpointConfiguration = new EndpointConfiguration("NSB.ChannelAdvisorService");
        var transport = endpointConfiguration.UseTransport<LearningTransport>();
        endpointConfiguration.AssemblyScanner().ExcludeAssemblies("netstandard");

        endpointConfiguration.UseContainer<UnityBuilder>(
            customizations =>
            {
                customizations.UseExistingContainer(container);
            });

        var endpointInstance = Endpoint.Start(endpointConfiguration).GetAwaiter().GetResult();
        //register
        container.RegisterType(typeof(IGenericHttpRequestRepository<>), typeof(GenericHttpRequestRepository<>), new TransientLifetimeManager());
        container.RegisterType<IOrderRepository, OrderRepository>();
        container.RegisterType<IShipmentRepository, ShipmentRepository>();
        container.RegisterType<IOrderProcessService, OrderProcessService>();
        container.RegisterType<IShipmentService, ShipmentService>();
        container.RegisterInstance(endpointConfiguration);

        //resolve 
        var orderProcessService = container.Resolve<IOrderProcessService>();
        var shipmentService = container.Resolve<IShipmentService>();
 .....

如您所见,我正在使用 Unity 和 NServiceBus,这是为了注册 DI 并与 NServicebus 一起使用它,这样我就可以将它 DI 到我的服务中以发送命令。

服务尝试 DI "IEndpointInstance"

public class OrderProcessService : IOrderProcessService
{
    private static Logger logger = LogManager.GetCurrentClassLogger();

    private readonly IEndpointInstance _endpoint;

    public OrderProcessService(IEndpointInstance endpoint)
    {
        _endpoint = endpoint;
    }

    public async Task PostNewOrderBatch()
    {
        var list = _orderRepository.GetBatchedOrders();

        foreach(var item in list)// parallel this?
        {
            await _endpoint.Send(item.ToObject<ProcessBatchOrdersCommand>()).ConfigureAwait(false);

    _orderRepository.DeleteFile(item.Property("FilePath").Value.ToString());
        }
    }
}

我觉得这可能是事物顺序的问题,据我所知,我认为我没有遗漏任何示例?

在 NServiceBus v6 及更高版本中,端点实例不再自动注册到容器中。您需要在现有容器上注册从 Endpoint.Start(configuration) 返回的端点实例。

https://docs.particular.net/nservicebus/dependency-injection/#using-an-existing-instance-endpoint-resolution