Итак, я создал новый проект Azure Functions v3 и портирую его на подмножество функций из v1, которые работали на 4.6.2, а остальные удаляются как устаревшие. К сожалению, при переходе от BrokeredMessage к Message из-за перехода с Microsoft.ServiceBus.Messaging на Microsoft. Azure .ServiceBus теперь происходит сбой следующего метода десериализации:
Произошла ошибка десериализации объекта типа потока. Неправильно отформатирован входной источник.
Проблема заключается в ошибке, но я не уверен, каков правильный новый подход, он немного неясен.
Сериализация
public static Message CreateBrokeredMessage(object messageObject)
{
var message = new Message(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(messageObject)))
{
ContentType = "application/json",
Label = messageObject.GetType().Name
};
return message;
}
Десериализация
public static T ParseBrokeredMessage<T>(Message msg)
{
var body = msg.GetBody<Stream>();
var jsonContent = new StreamReader(body, true).ReadToEnd();
T updateMessage = JsonConvert.DeserializeObject<T>(jsonContent);
return updateMessage;
}
Объект
var fileuploadmessage = new PlanFileUploadMessage()
{
PlanId = file.Plan_Id.Value,
UploadedAt = uploadTimeStamp,
UploadedBy = uploadUser,
FileHash = uploadedFileName,
FileName = file.Name,
BusinessUnitName = businessUnitName,
UploadedFileId = uploadedFile.Id
};
```