Как устранить неполадки при обработке сообщений - PullRequest
0 голосов
/ 21 сентября 2019

Я использую очередь ServiceBus для обработки некоторых сообщений.Это работало нормально, но в последнее время мне нужно было изменить свойство сообщения с массива строк на одну строку, и это привело к тому, что большинство сообщений оказались в очереди недоставленных сообщений.Кажется странным, что некоторые сообщения успешно обрабатываются, а большинство - неудачно.

Единственное изменение объекта .net заключается в следующем:

public string[] Ids { get; set; }

становится

public string Id {get; set;}

У меня есть некоторые журналы на месте, и он показывает несколько записей:

Произошло сообщение об ошибке обработки: Ошибка преобразования значения «myId» в тип «System.String []».Путь 'Id', строка 1, позиция 776. в Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType (считыватель JsonReader, значение объекта, культура CultureInfo, контракт JsonContract, тип targetType)

Это указывает на то, чточто проблема связана с тем, что объект десериализован неправильно, но я понятия не имею, почему он пытается преобразовать строку 'myId' в массив строк.

Я десериализую следующим образом:

var model = JsonConvert.DeserializeObject<AssignBenefitsRequest>(Encoding.UTF8.GetString(message.Body));

Когда я проверяю результат Encoding.UTF8.GetString(message.Body), строка выглядит правильно сформированной и идентичной тому, как она выглядит при сериализации перед добавлением в очередь следующим образом:

var message = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(new MyObject
            {
                Id = model.Id
            }));

результат в обоих случаяхвыглядит так:

"{\"Id\":\"myId\"}"

У меня закончились идеи о том, почему это происходит - кто-нибудь может пролить свет на это?

...