2012-03-26 2 views
2

NServiceBus 3.0을 사용하여 명령을 보내려고합니다. 모든 것은 ICommand를 구현하는 명령을 보낼 때 작동합니다. 그러나 규칙을 사용하면 작동하지 않습니다. 근원은 아래에있다. 누군가 내가 뭘 잘못하고 있다고 말할 수 있습니까?... 형식 ... serializer (비 웹 응용 프로그램)에 등록되지 않았습니다.

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

이렇게했습니다. 감사! –