2014-03-12 135 views
0

我有一個Payload類型的財產object
我填寫有效載荷與匿名類型,並把它關閉,然後我得到這個醜陋的錯誤:NServiceBus消息是否可以具有匿名類型屬性?

2014-03-12 15:50:25,649 [7] 
ERROR NServiceBus.Unicast.Transport.TransportReceiver [(null)] <(null)> - 
Failed to serialize message with ID: fc8d44c1-3750-4658-ba91-a2ec010507aa` 

System.Runtime.Serialization.SerializationException: 
An error occurred while attempting to extract logical messages from 
transport message NServiceBus.TransportMessage ---> 
Newtonsoft.Json.JsonSerializationException: 

Error resolving type specified in 
JSON '<>f__AnonymousType2`2[[System.String, mscorlib],[System.Int32,mscorlib]], MyProject'. 
Path '[0].Payload.$type', line 1, position 366. ---> Newtonsoft.Json.JsonSerializationException: Could not load assembly 'MyProject'. 

回答

2

我就遇到了這個問題 - 這個問題是json.net不是真的NServiceBus。
Json.Net需要能夠將該類型反序列化爲嚴格的對象,但它不能。

有幾種方法可以做到這一點,你可以改變你的有效載荷對象到一個接口,這將迫使NServiceBus使用TypeNameHandling.None,這反過來會導致Json.Net反序列化,即使不知道類型。

或者您可以編寫自己的序列化程序,可能嚴重依賴於它們的Json.Net一個,但始終使用TypeNameHandling.None。

我還沒有找到保持TypeNameHandling的原因,我想也許特定的團隊做出了這樣做的決定。

相關問題