我正在尝试将NServiceBus与ASP.NET MVC 2网站一起使用(使用VS 2010和.NET 4.0框架)。但是,当我在本地计算机上运行该站点时,出现以下错误:
无法加载一个或多个请求的类型。检索LoaderExceptions属性以获取更多信息。
以下是我采取的相关步骤:
public static IBus Bus { get; private set; } protected void Application_Start() { AreaRegistration.RegisterAllAreas(); RegisterRoutes(RouteTable.Routes); Bus = NServiceBus.Configure .WithWeb() .Log4Net() .DefaultBuilder() .XmlSerializer() .MsmqTransport() .IsTransactional(false) .PurgeOnStartup(false) .UnicastBus() .ImpersonateSender(false) .CreateBus() .Start(); }
<MsmqTransportConfig InputQueue="MyWebClient" ErrorQueue="error" NumberOfWorkerThreads="1" MaxRetries="5"/> <UnicastBusConfig> <MessageEndpointMappings> <add Messages="Messages" Endpoint="MyServerInputQueue"/> </MessageEndpointMappings> </UnicastBusConfig>
错误表明问题出在Global.asax.cs文件的第一行。是否有可能在.NET 4.0下运行NServiceBus?
答案 0 :(得分:7)
检查LoaderExceptions并查看它所抱怨的程序集,然后通过调用Configure.With(AllAssemblies.Except(“problematicAssembly.dll”)而不是Configure.WithWeb()将其排除,并保留其余的流畅初始化代码相同。
答案 1 :(得分:2)
我遇到了同样的问题。当Udi建议检查LoaderExceptions时,问题程序集被识别为“Antlr3.Runtime.dll”。这个程序集在我的项目中没有直接引用,但是引用了NHibernate.dll的依赖项。
因此,添加With(AllAssemblies.Except(“Antlr3.Runtime.dll”))并没有为我修复它,我不得不将其更改为With(AllAssemblies.Except(“NHibernate.dll”))。 / p>
因此,如果您遇到此问题并直接排除程序集并未修复它,请尝试使用Reflector检查引用的程序集依赖项以确定问题的根源。希望这可以帮助有类似问题的人...
答案 2 :(得分:0)
与rob类似,但我添加了绑定重定向并解决了我的问题 - 我的deploy.ps1失败了,我不想重新编译。
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" />
</dependentAssembly>
</assemblyBinding>
</runtime>