Nservicebus 类型未在序列化程序中注册(非web应用)

Nservicebus 类型未在序列化程序中注册(非web应用),nservicebus,nservicebus3,Nservicebus,Nservicebus3,我正在尝试使用NServiceBus 3.0发送命令。当我发送一个实现ICommand的命令时,一切正常。但是,如果我使用约定,它将不起作用。资料来源如下。有人能告诉我我做错了什么吗 公共类程序 { public static NServiceBus.IBus总线{get;private set;} 静态void Main(字符串[]参数) { 配置总线(); var command=newroutetradecommand(){TradeXml=”“}; 发送(“BrokerQueue@DAT

我正在尝试使用NServiceBus 3.0发送命令。当我发送一个实现ICommand的命令时,一切正常。但是,如果我使用约定,它将不起作用。资料来源如下。有人能告诉我我做错了什么吗

公共类程序
{
public static NServiceBus.IBus总线{get;private set;}
静态void Main(字符串[]参数)
{
配置总线();
var command=newroutetradecommand(){TradeXml=”“};
发送(“BrokerQueue@DATPCDI041“,指挥部);
}
专用静态void ConfigureBus()
{
Bus=Configure.With()
.DefaultBuilder()
.XmlSerializer()
.MsmqTransport()
.UnicastBus()
.DefiningCommandsAs(t=>t.Namespace!=null&&t.Namespace.EndsWith(“消息”))
.SendOnly();
}
}
该命令如下所示:

命名空间消息
{
公共类RouteTradeCommand:IRouteTradeCommand
{
公共字符串TradeXml{get;set;}
}   
}
不幸的是, NSB取决于配置方法的顺序。如果使用以下方法将DefiningCommandsAs方法移到后面,它将起作用:

NServiceBus.Configure.WithWeb()
.DefiningCommandsAs(t => t.Namespace != null && t.Namespace.EndsWith(".Commands"))
.Log4Net()
.DefaultBuilder()
.XmlSerializer()
.MsmqTransport()
.DefineEndpointName("Web")
.UnicastBus()
.SendOnly();
不幸的是, NSB取决于配置方法的顺序。如果使用以下方法将DefiningCommandsAs方法移到后面,它将起作用:

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