2

我正在尝试将 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 是否可能存在问题?

4

3 回答 3

7

检查 LoaderExceptions 并查看它在抱怨哪个程序集,然后通过调用 Configure.With(AllAssemblies.Except("problematicAssembly.dll") 而不是 Configure.WithWeb() 将其排除,并将其余的流畅初始化代码保持不变。

于 2010-04-06T02:33:56.287 回答
2

我有同样的问题。当按照 Udi 的建议检查 LoaderExceptions 时,问题程序集被识别为“Antlr3.Runtime.dll”。这个程序集没有在我的项目中直接引用,而是被引用的 NHibernate.dll 的依赖项。

因此,添加 With(AllAssemblies.Except("Antlr3.Runtime.dll")) 并没有为我解决问题,我不得不将其更改为 With(AllAssemblies.Except("NHibernate.dll"))。

因此,如果您遇到此问题并且直接排除程序集并不能解决它,请尝试使用 Reflector 检查您引用的程序集依赖项以确定问题的根源。希望这可以帮助有类似问题的人......

于 2010-06-01T15:35:04.163 回答
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>
于 2014-01-13T06:41:03.473 回答