将azure移动服务autofac与nservicebus注册相结合

时间:2015-02-13 11:55:23

标签: azure nservicebus azure-mobile-services

我正在尝试将azure移动服务和nservicebus注册的注册结合起来。当我尝试将IBus注入控制器时,它不起作用。

public class AutofacConfig
{
      public static void Register(HttpConfiguration http, ContainerBuilder container)
      {
            var busConfiguration = new BusConfiguration();
            busConfiguration.UseContainer<AutofacBuilder>(c => c.ExistingLifetimeScope(container.Build()));

            var bus = Bus.Create(busConfiguration);
            bus.Start();
      }
}

我需要调用container.Build()才能将当前容器传递给NServiceBus。但这会导致我的WebApiConfig类中的ServiceConfig.Initialize出现错误

public static class WebApiConfig
    {
        public static void Register()
        {
            // Use this class to set configuration options for your mobile service
            ConfigOptions options = new ConfigOptions();

            // Use this class to set WebAPI configuration options
            HttpConfiguration config = ServiceConfig.Initialize(new ConfigBuilder(options, AutofacConfig.Register));


            // To display errors in the browser during development, uncomment the following
            // line. Comment it out again when you deploy your service for production use.
            // config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;

            Database.SetInitializer(new nos_devInitializer());
        }
    }

1 个答案:

答案 0 :(得分:1)

好的,我看到我可以从依赖性解析器解析ILifetimeScope。在ServiceConfig.Initialize之后调用此方法,并且两个注册已配对。

public class NServiceBusConfig
{
    public static void Register(HttpConfiguration config)
    {
        var resolver = (AutofacWebApiDependencyResolver)config.DependencyResolver;
        var scope = resolver.GetService<ILifetimeScope>();

        var busConfiguration = new BusConfiguration();
        busConfiguration.UseContainer<AutofacBuilder>(f => f.ExistingLifetimeScope(scope));

        var bus = Bus.Create(busConfiguration);
        bus.Start();
    }
}