2014-06-24 66 views
0

我的NServiceBus发出警告,说它收到一条空消息,因此忽略它。 但消息确实不是空的。NServiceBus:收到一条空消息

我的总线配置

Configure.With() 
       .Log4Net() 
       .DefaultBuilder() 
       .XmlSerializer() 
       .RavenSubscriptionStorage() 
       .MsmqTransport() 
        .IsTransactional(true) 
        .PurgeOnStartup(false) 
       .UnicastBus(); 

这里是消息。 XML是正确的(我的意思是与我发送的对象相比,XML的值和标签是正确的)。

<Messages> 
<Class1> 
<Class2> 
<QueueAddress>.\\private$\\myerrorqueue</QueueAddress> 
<Category>Some string here</Category> 
<ExtraInfo> </ExtraInfo> 
<Priority> 1 </Priority> 
<LookupValue> 1 </LookupValue> 
</Class2> 
</Class1> 
</Messages> 

警告

2014-06-24 15:45:42,213 [Worker.14] WARN NServiceBus.Unicast.UnicastBus [(null) 
] - Received an empty message - ignoring. 

我知道,反序列化是不可能的,如果只有只读属性。我的界面没有只读属性。

public interface ISomeInterfaceImplementedByClass1 
{ 
    Class2 class2{ get; set; } 
} 

NServiceBus - Server is throwing empty message warning to the console提到的,我确信有公共汽车相同的配置,在发送端和接收端,但仍存在以下问题。

可能是什么原因?

更新: 如果我使用JSONSerializer,则会调用适当的处理函数。所以它不适用于XMLSerializer。

+0

由于安全考虑,我假设你正在混淆你的消息,但正如你所拥有的,它几乎是不可读的。你能否改变它以更真实地传达一些信息?例如,调用一个字符串属性“StringA”和一个int属性“IntA”或类似的东西。 –

+0

对不起。编辑xml。希望它现在更具可读性。 – user3344591

回答

0

原因:我正在创建一个接口实例并发送它。 XMLSerializer没有序列化接口。

而不是XMLSerializer,我用JSONSerializer和适当的处理程序被调用。