Сбой служебной шины SendMessageAsync, когда ApplicationProperties установлены значения из десериализованного словаря JsoC#

Место общения программистов C#
Ответить
Anonymous
 Сбой служебной шины SendMessageAsync, когда ApplicationProperties установлены значения из десериализованного словаря Jso

Сообщение Anonymous »

У меня есть сценарий, в котором мне нужно установить ApplicationProperties для сообщения служебной шины Azure. У меня есть словарь ключей, тип значения . Я также использую System.Text.Json для десериализации полезных данных из запроса.
Я пытался воссоздать проблему. У меня есть метод, который дает мне полезную нагрузку тела. здесь я назвал его GetParams. Он дает словарь с нулевым значением

Код: Выделить всё

 IDictionary? GetParams()
{
bool shouldReturnParameters = true;
if (shouldReturnParameters)
{
string jsonString = "{\"Parameter1\": 123, \"Parameter2\": \"Some value\"}";
var parameters = JsonSerializer.Deserialize(jsonString);

return parameters;
}
else
{
return null;
}
}
Теперь в основном методе я пытаюсь отправить сообщение

Код: Выделить всё

    var data = Encoding.UTF8.GetBytes(json);
var message = new ServiceBusMessage(data);
IDictionary? params = GetParams();
if (params != null)
{
foreach (var param in params)
{
message.ApplicationProperties[param.Key] = param.Value;
}
}

await sender.SendMessageAsync(message); //ERROR!
Теперь я получаю необработанное исключение System.Runtime.Serialization.SerializationException: сбой сериализации из-за неподдерживаемого типа System.Text.Json.JsonElement.
Когда я отлаживал код, в параметре param.Value помимо значения было свойство ValueKind. Когда я просто жестко задавал значения при присвоении таких значений, как ApplicationProperties["Parameter1"] = 123, тогда это сработало.
Итак, существует ли общее решение этой проблемы. Должен ли я выполнить .toString() и выполнить проверку if для проверки каждого типа, такого как строка, число, логическое значение и т. д., а затем проанализировать значение для этого типа.

Подробнее здесь: https://stackoverflow.com/questions/792 ... -with-valu
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»