2

ASP.NET MVC 2 Web サイト (VS 2010 および .NET 4.0 フレームワークを使用) で NServiceBus を使用しようとしています。ただし、ローカル マシンでサイトを実行すると、次のエラーが発生します。

要求されたタイプの 1 つ以上を読み込めません。詳細については、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.WithWeb()の代わりにConfigure.With(AllAssemblies.Except( "problematicAssembly.dll")を呼び出して除外し、残りの流暢な初期化コードは同じままにします。

于 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 に答える