带有NServiceBus的ASP.NET MVC 2无法加载请求的类型

时间:2010-04-05 20:26:52

标签: asp.net-mvc .net-4.0 nservicebus

我正在尝试将NServiceBus与ASP.NET MVC 2网站一起使用(使用VS 2010和.NET 4.0框架)。但是,当我在本地计算机上运行该站点时,出现以下错误:

  

无法加载一个或多个请求的类型。检索LoaderExceptions属性以获取更多信息。

以下是我采取的相关步骤:

  • 下载了NServiceBus.2.0.0.1145二进制文件
  • 在我的asp.net mvc应用程序中,我添加了对NServiceBus.dll和NServiceBus.Core.dll的引用
  • 在Global.asax.cs中我添加了:
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();
}
  • 在web.config中,我添加了:
<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?

3 个答案:

答案 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>