NServiceBus会无缘无故地恢复为XmlSerilizer

NServiceBus会无缘无故地恢复为XmlSerilizer,nservicebus,Nservicebus,我在NSB恢复Xml序列化程序时遇到问题,原因很明显,这在尝试反序列化消息时会导致错误。下面是日志的摘录,您可以看到一些源代码与Json相同,然后突然出现了XML 2018-06-05 08:51:36.924 INFO Stockly.Services.Messaging.Common.Extensions.MessageBodyWriter序列化消息正文: 2018-06-05 08:51:37.026 INFO Stockly.Services.Messaging.Common.Exten

我在NSB恢复Xml序列化程序时遇到问题,原因很明显,这在尝试反序列化消息时会导致错误。下面是日志的摘录,您可以看到一些源代码与Json相同,然后突然出现了XML

2018-06-05 08:51:36.924 INFO Stockly.Services.Messaging.Common.Extensions.MessageBodyWriter序列化消息正文: 2018-06-05 08:51:37.026 INFO Stockly.Services.Messaging.Common.Extensions.MessageBodyWriter{“交换”:“二进制”、“符号”:“系统BTC”、“分钟处理”:15} 2018-06-05 08:51:38.505 INFO Stockly.Services.QuoteService.QuoteHandler收到SYSBTC的报价请求,并检索了1000支蜡烛 2018-06-05 08:51:38.725 INFO Stockly.Services.Messaging.Common.Extensions.MessageBodyWriter序列化消息正文: 2018-06-05 08:51:38.728 INFO Stockly.Services.Messaging.Common.Extensions.MessageBodyWriter{“交换”:“二进制”,“符号”:“DASHBTC”,“分钟处理”:15} 2018-06-05 08:51:39.194信息Stockly.Services.QuoteService.QuoteHandler收到DASHBTC的报价请求,并检索了1000支蜡烛 2018-06-05 08:51:39.228信息Stockly.Services.Messaging.Common.Extensions.MessageBodyWriter序列化消息正文: 2018-06-05 08:51:39.230信息Stockly.Services.Messaging.Common.Extensions.MessageBodyWriter{“交换”:“二进制”,“符号”:“ENJBTC”,“分钟处理”:15} 2018-06-05 08:51:39.715 INFO Stockly.Services.QuoteService.QuoteHandler收到ENJBTC的报价请求,并检索了1000支蜡烛 2018-06-05 08:51:39.774 INFO Stockly.Services.Messaging.Common.Extensions.MessageBodyWriter序列化消息正文: 2018-06-05 08:51:39.777 INFO Stockly.Services.Messaging.Common.Extensions.MessageBodyWriter BinanceRPXBTC15 2018-06-05 08:51:39.824错误NServiceBus.RecoverabilityExecutor将消息“f095da8a-e830-4873-8fa0-a8f200719739”移动到错误队列“ERROR”,因为异常导致处理失败:
NServiceBus.MessageDeserializationException:尝试从传入的物理消息f095da8a-e830-4873-8fa0-a8f200719739中提取逻辑消息时出错-->Newtonsoft.Json.JsonReaderException:解析值时遇到意外字符:这原来是以前运行的测试中的一些遗留消息仍然使用xml作为序列化格式。清除输入队列解决了这个问题


更多详细信息:

不确定为什么要覆盖内容类型键。您的发送端点配置是否正确?如果您使用相同的内容类型键但不同的设置注册了两次序列化程序,那么还有什么奇怪的呢
public static EndpointConfiguration ConfigureSerialization(this EndpointConfiguration endpointConfiguration)
        {
            var serialization = endpointConfiguration.UseSerialization<NewtonsoftSerializer>();
            serialization.ContentTypeKey("NewtonsoftJson");
            var settings = new JsonSerializerSettings
            {
                TypeNameHandling = TypeNameHandling.Auto,
                Converters =
                    {
                        new IsoDateTimeConverter
                        {
                            DateTimeStyles = DateTimeStyles.RoundtripKind
                        }
                    }
            };

            serialization.Settings(settings);
            endpointConfiguration.RegisterMessageMutator(new MessageBodyWriter());

            var externalNewtonsoftJson = endpointConfiguration.AddDeserializer<NewtonsoftSerializer>();
            externalNewtonsoftJson.ContentTypeKey("NewtonsoftJson");

            return endpointConfiguration;
        }