0

全部。由于 Pluralsight 和互联网,我开始使用 NServiceBus 并很好地掌握了基础知识。我有一个股票 MVC 4 项目,我为我的控制器设置了依赖注入(感谢这篇博文)。

这是我在 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,但从我所看到的一切来看,这应该可以正常工作。任何信息都会非常有帮助。谢谢。

4

2 回答 2

1

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

于 2013-02-15T00:00:46.647 回答
0

我从你的代码中找到了解决方案,约翰!这是我的问题。这就是我在依赖解析器适配器中的内容:

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

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

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

一旦我这样做了,一切都会自行解决。再次感谢您的帮助!

于 2013-02-15T17:18:07.663 回答