Я пытался воссоздать проблему. У меня есть метод, который дает мне полезную нагрузку тела. здесь я назвал его 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!
Когда я отлаживал код, в параметре param.Value помимо значения было свойство ValueKind. Когда я просто жестко задавал значения при присвоении таких значений, как ApplicationProperties["Parameter1"] = 123, тогда это сработало.
Итак, существует ли общее решение этой проблемы. Должен ли я выполнить .toString() и выполнить проверку if для проверки каждого типа, такого как строка, число, логическое значение и т. д., а затем проанализировать значение для этого типа.
Подробнее здесь: https://stackoverflow.com/questions/792 ... -with-valu
Мобильная версия