2014-03-12 2 views
0

object 유형의 Payload 속성이 있습니다.
나는 그때이 추악한 오류, 익명의 유형과 페이로드를 작성하고 그것을 배웅 :이 문제에 실행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 항상 켜져 자신 만의 serializer를 작성할 수 있습니다.

TypeNameHandling을 계속 사용하는 이유를 찾지 못했지만 아마도 특정 팀이 그런 식으로 결정했을 것입니다.