Async Callback бросил исключение - PullRequest
1 голос
/ 13 октября 2019

Я получаю следующую ошибку при попытке NServiceBus с autofac DI:

InvalidOperationException: реализация IAsyncResult 'Microsoft.ServiceBus.Messaging.Channels.ReconnectBindingElement + ReconnectChannelFactory`1 + RequestSessionChannelSultSlynSyniceMaseSyniceSense для запроса.Channels.IRequestSessionChannel] 'пытался выполнить одну операцию несколько раз. Это может быть вызвано неправильным применением реализации IAsyncResult или другого кода расширяемости, такого как IAsyncResult, который возвращает неправильные значения CompletedSynchronously или несколько раз вызывает AsyncCallback.

WebApiConfig:

public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

            try
            {
                var builder = new ContainerBuilder();
                builder.RegisterApiControllers(Assembly.GetExecutingAssembly()).PropertiesAutowired();
                builder.RegisterType<MessageHandler>().As<IMessageHandler>().InstancePerLifetimeScope();

                var container = builder.Build();

                var bus = CreateBusInstance(container);
                builder.RegisterInstance(bus).As<IBus>().SingleInstance();
                var resolver = new AutofacWebApiDependencyResolver(container);
                config.DependencyResolver = resolver;
            }
            catch(Exception e)
            {
                throw;
            }
        }

        private static IBus CreateBusInstance(ILifetimeScope container)
        {
            var configuration = new BusConfiguration();
            configuration.EndpointName("ServiceBusName");
            configuration.DisableFeature<SecondLevelRetries>();
            configuration.DisableFeature<Sagas>();
            configuration.DisableFeature<TimeoutManager>();
            configuration.ScaleOut().UseSingleBrokerQueue();
            configuration.UsePersistence<AzureStoragePersistence>();
            configuration.UseTransport<AzureServiceBusTransport>().ConnectionString(ConfigurationManager.ConnectionStrings["ServiceBus"].ToString());
            configuration.UseSerialization<XmlSerializer>();
            configuration.UseContainer<AutofacBuilder>(cust => cust.ExistingLifetimeScope(container));
            return Bus.Create(configuration).Start();
        }
    }

MessageHandler:

using nservciebus.Models;
using NServiceBus;

namespace nservciebus.ServiceBusHandler
{
    public class MessageHandler : IMessageHandler
    {
        private readonly IBus _bus;

        public MessageHandler(IBus bus)
        {
            _bus = bus;
        }

        public void Handle(ServiceBusMessage message)
        {
            _bus.Send(message);
        }
    }
}

Используемый пакет Nuget: - Autofac: 3.5.2 - Autofac.Owin: 4.0 - Autofac.WebApi2: 4.0 - Autofac.WebApi2.Owin: 4.0 - NServiceBus: 5.2.14 - NServiceBus.Autofac: 5.0 - NServiceBus.Azure.transports.WindowsAzureServiceBus: 6.4 - NServiceBus.Azure: 6.2.3 - WindowsAzure.Storage: 4.3 - WindowsAzure.ServiceBus: 2.8.2

AnyIdeas о причинах этой проблемы икак это исправить?

Спасибо

...