NServiceBus / MVC注入 - Autofac不喜欢IControllerFactory?

时间:2013-02-14 18:51:45

标签: model-view-controller dependency-injection nservicebus autofac

所有。由于Pluralsight和互联网,我开始使用NServiceBus,并且在基础知识方面有很好的处理。我有一个股票MVC 4项目,我已经为我的控制器设置依赖注入(感谢this blog post)。

以下是我在Global.asax中设置总线的方法:

_bus = Configure.With()
                .DefaultBuilder()
                .ForMVC()
                .Log4Net()
                .XmlSerializer()
                .MsmqTransport()
                .UnicastBus()
                .SendOnly();

我将它分配给本地私有变量,因为我需要访问Global中的总线,所以我可以在Session_End上做一些事情。但是,当我运行时,我收到以下错误:

  

请求的服务'System.Web.Mvc.IControllerFactory'尚未成功   注册。要避免此异常,请将组件注册到   提供服务,检查服务注册使用   IsRegistered(),或使用ResolveOptional()方法来解析   可选的依赖。

根据我的堆栈跟踪,失败点是Autofac尝试解析类型的时候。为了理智,我删除了私有变量并仅使用了Configure语句,同样的事情。我也在这个应用程序中连接了Ninject,因为这是我选择的IoC。考虑到它在某种程度上干扰了Autofac,我从方程式中移除了Ninject,仍然没有工作。

所以我的问题是,我做错了什么?我错过了什么吗?这是我第一次使用NServiceBus,但是从我看过的所有内容来看,这应该可行。任何信息都会非常有用。感谢。

2 个答案:

答案 0 :(得分:1)

看看我们的MVC4样本(这是针对v4,下一个主要版本):
https://github.com/NServiceBus/NServiceBus/tree/develop/Samples/Messaging.Msmq/MyWebClient

答案 1 :(得分:0)

我从您的代码中找到了解决方案,John!这是我的问题。这就是我在Dependency Resolver Adapter中所拥有的:

public object GetService(Type serviceType)
{
    _builder.Build(serviceType);
}

我需要做的是你在MVC4示例中所做的:

public object GetService(Type serviceType)
{
    return (Configure.Instance.Configurer.HasComponent(serviceType)) ? _builder.Build(serviceType) : null;
}

一旦我这样做,它就全部排除了。再次感谢您的帮助!