Asp.net mvc 4 使用ASP.NET MVC4和StructureMap配置NServiceBus
通过从nuget安装structuremap和structuremap.mvc4,我创建了一个ASP.NET mvc4 web应用程序。然后我添加了nservicebus和nservicebus.structuremap包,也来自nuget 我以前使用structuremap创建过两个mvc4应用程序,没有问题,我还使用nservicebus和structuremap学习了一些基本发布/订阅教程,并使其正常工作 然而,当我尝试将nservicebus与structuremap一起放入mvc4时,效果并不理想。 我遇到的问题是,下面列出的针对mvc和具有mvc的DI的N服务总线教程似乎希望开发人员使用内置的依赖注入容器Asp.net mvc 4 使用ASP.NET MVC4和StructureMap配置NServiceBus,asp.net-mvc-4,dependency-injection,structuremap,nservicebus3,Asp.net Mvc 4,Dependency Injection,Structuremap,Nservicebus3,通过从nuget安装structuremap和structuremap.mvc4,我创建了一个ASP.NET mvc4 web应用程序。然后我添加了nservicebus和nservicebus.structuremap包,也来自nuget 我以前使用structuremap创建过两个mvc4应用程序,没有问题,我还使用nservicebus和structuremap学习了一些基本发布/订阅教程,并使其正常工作 然而,当我尝试将nservicebus与structuremap一起放入mvc4时,
如果您以前使用过structure map,nuget包会很好地添加解析器,并使用WebActivator运行初始设置。之后,我不确定容器会发生什么,因此无法使用它在Configure.With().StructureMapBuilder(StructureMapContainer)中设置NServiceBus生成器 为了使nservicebus和structuremap在asp.net MVC4中发挥良好的作用,我必须做些什么?我知道它的操作员错误,但我不确定此时该怎么办?另外,版本3是否有一个messageendpointconfig,其中包含一些漂亮的配置角色?这不适用于web环境吗?我想我可以得到一个容器的引用然后离开,但事实似乎并非如此 编辑:添加了一些代码
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterAuth();
Configure.With()
.StructureMapBuilder(ObjectFactory.Container) //this obviously won't work
.JsonSerializer()
.Log4Net()
.MsmqTransport()
.IsTransactional(false)
.PurgeOnStartup(true)
.UnicastBus()
.ImpersonateSender(false)
.CreateBus()
.Start(() => Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install());
}
受保护的无效应用程序\u Start()
{
RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterAuth();
用()配置
.StructureMapBuilder(ObjectFactory.Container)//这显然不起作用
.JsonSerializer()
.Log4Net()
.MsmqTransport()
.IsTransactional(错误)
.PurgeOnStartup(正确)
.UnicastBus()
.ImpersonateSender(错误)
.CreateBus()
.Start(()=>Configure.Instance.ForInstallationOn().Install());
}
编辑2:
即使我通过将依赖项解析器设置为Application_Start(),解决了StructureMap的问题,NServiceBus仍然希望在出现故障配置和MsmqTransportConfig的情况下配置MessageForwardingInCaseOfFaultConfig
我想我记得这些属性应该由通过endpoint config上的接口设置的角色自动配置?您需要将这些部分添加到web.config文件中:
<configuration>
<configSections>
<section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
<section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core"/>
</configSections>
<MessageForwardingInCaseOfFaultConfig ErrorQueue="error"/>
<MsmqTransportConfig NumberOfWorkerThreads="1" MaxRetries="5"/>
</configuration>
NServiceBus v3不会自动创建这些