所有。由于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,但是从我看过的所有内容来看,这应该可行。任何信息都会非常有用。感谢。
答案 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;
}
一旦我这样做,它就全部排除了。再次感谢您的帮助!