2012-01-31 12 views
4

Windows Server 2003 32ビットでNServiceBus 2.6.0.1504を使用しています。NServiceBus "CreateBus()"がNULLを返す

生成されるログファイルは、すべてが配線されていることを示しますが、何らかの理由で「CreateBus()」がnullを返します。私のデバッグコードを無視してください:)

 SetLoggingLibrary.Log4Net(log4net.Config.XmlConfigurator.Configure); 

     var one = Configure.With(typeFinder.GetAssemblies()); 
     var two = one.DefaultBuilder(); 
     var three = two.MsmqSubscriptionStorage(); 
     var four = three.XmlSerializer(); 
     var five = four.MsmqTransport(); 
     var six = five.IsTransactional(false); 
     var seven = six.PurgeOnStartup(true); 
     var eight = seven.UnicastBus(); 
     var nine = eight.LoadMessageHandlers(); 
     var ten = nine.ImpersonateSender(false); 
     var eleven = ten.CreateBus(); 
     if (eleven == null) 
      throw new Exception("createbus"); 
     var twelve = eleven.Start(); 

メッセージ "createbus"の例外が常にスローされます。

これはWindows Server 2008 R2 64ビット版の私の開発ボックスで動作します。

ここはウェブアプリの設定です。

<MsmqSubscriptionStorageConfig Queue="MedXChangeSubcriptions" /> 
    <MsmqTransportConfig InputQueue="MedXChangeForms" ErrorQueue="error" NumberOfWorkerThreads="1" MaxRetries="5" /> 
    <UnicastBusConfig> 
    <MessageEndpointMappings> 
     <add Messages="MethodFactory.MedXChange.Library" Endpoint="MedXChangeWeb" /> 
    </MessageEndpointMappings> 
    </UnicastBusConfig> 

どんな助けでも大歓迎です。

+0

完全な例外を追加できますか? .NET 3.5または.NET 4.0バージョンを実行していますか? –

+0

例外は発生しません。 nullを返します。 .NET 4.0 –

+0

あなたのtypeFinder検索はどのようなタイプですか?必要なNSBアセンブリをすべて含んでいますか? –

答えて

0

NServiceBus return null if a bus has already been createdです。だから誰かが既にあなたのためにバスをインスタンス化しているかどうかを判断してください。

私のシナリオでは、エンドポイント構成が一貫して定義されていませんでした。あるプロセスでは、IConfigureThisEndpointを実装し、明示的にバスを構成してインスタンス化します。別のプロセスでは、AsA_Publisherから継承します。暗黙的にはあなたのためのバスを作成します。この別のプロセスのバス構成を明示的に定義する時間が来たときには、NullReferenceExceptionを流暢なCreateBusメソッドにスローします。 AsA_Publisher継承を削除すると、問題が解決しました。

希望すると便利です。