2012-03-26 16 views
2

NServiceBus 3.0でコマンドを送信しようとしています。 ICommandを実装するコマンドを送信すると、すべてが機能します。しかし、私が慣例を使用するとうまくいきません。ソースは以下です。誰かが私が間違っていることを教えてもらえますか?タイプ...シリアライザ(非ウェブアプリ)に登録されていません

public class Program 
{ 
    public static NServiceBus.IBus Bus { get; private set; } 

    static void Main(string[] args) 
    { 
     ConfigureBus(); 

     var command = new RouteTradeCommand() { TradeXml = "<trade />" }; 
     Bus.Send("[email protected]", command); 
    } 

    private static void ConfigureBus() 
    { 
     Bus = Configure.With() 
      .DefaultBuilder() 
      .XmlSerializer() 
      .MsmqTransport() 
      .UnicastBus() 
      .DefiningCommandsAs(t => t.Namespace != null && t.Namespace.EndsWith("Messages")) 
      .SendOnly(); 
    } 
} 

コマンドは次のようになります。

namespace Messages 
{ 
    public class RouteTradeCommand : IRouteTradeCommand 
    { 
     public string TradeXml { get; set; } 
    } 
} 

答えて

4

残念ながら、 NSBは、設定方法の順序に依存しています。 DefiningCommandsAsメソッドを直後に移動すると機能します。

NServiceBus.Configure.WithWeb() 
.DefiningCommandsAs(t => t.Namespace != null && t.Namespace.EndsWith(".Commands")) 
.Log4Net() 
.DefaultBuilder() 
.XmlSerializer() 
.MsmqTransport() 
.DefineEndpointName("Web") 
.UnicastBus() 
.SendOnly(); 
+0

それがそうでした。ありがとう! –

関連する問題