如果使用owinselfhost,注入总线的正确方法是什么?

时间:2015-04-14 01:59:54

标签: asp.net asp.net-web-api nservicebus owin self-hosting

我有一个asp.net web api控制器,它发送一个nservicebus消息,即Bus.Send()。这个api控制器是使用owinselfhost包自己托管的。

如果我正在使用owinselfhost,那么注入总线的正确方法是什么?

- 编辑 -

这里是代码..我现在使用autofac ..有这些仍然在总线上给我一个空的ref异常......

的引用:

http://docs.autofac.org/en/latest/integration/webapi.html#owin-integration

http://docs.particular.net/nservicebus/containers/

- 编辑 -

public void Configuration(IAppBuilder app)
    {
        var builder = new ContainerBuilder();
        //this two controllers are from two separate class libraries.
        builder.RegisterApiControllers(typeof(Test1Controller).Assembly);
        builder.RegisterApiControllers(typeof(Test2Controller).Assembly);

        var config = new HttpConfiguration();
        config.MapHttpAttributeRoutes();

        var container = builder.Build();
        config.DependencyResolver = new AutofacWebApiDependencyResolver(container);

        Configure.With()
            .UsingContainer<AutofacObjectBuilder>()
            .UnicastBus()
            .SendOnly();

        app.UseAutofacMiddleware(container);
        app.UseAutofacWebApi(config);
        app.UseWebApi(config);
    }

1 个答案:

答案 0 :(得分:3)

您要求NServiceBus使用Autofac,但您没有将其提供给您的容器。如果您将容器传递到那里,您将把总线注入控制器。

Configure.With()
        .UsingContainer<AutofacObjectBuilder>(container)
        .UnicastBus()
        .SendOnly();