Serialization Azure服务总线消息反序列化在核心转换中中断

Serialization Azure服务总线消息反序列化在核心转换中中断,serialization,azure-storage,message,azureservicebus,brokeredmessage,Serialization,Azure Storage,Message,Azureservicebus,Brokeredmessage,因此,我创建了一个新的Azure Functions项目v3,并移植了运行在4.6.2上的v1中的一部分函数,同时将其余的函数视为过时函数。不幸的是,由于从Microsoft.ServiceBus.Messaging更改为Microsoft.Azure.ServiceBus,在从BrokeredMessage更改为Message的过程中,以下反序列化方法现在失败: 反序列化stream类型的对象时出错。输入源的格式不正确 问题就在错误中,但我不确定正确的新方法是什么,有点不清楚 连载 反序列化

因此,我创建了一个新的Azure Functions项目v3,并移植了运行在4.6.2上的v1中的一部分函数,同时将其余的函数视为过时函数。不幸的是,由于从Microsoft.ServiceBus.Messaging更改为Microsoft.Azure.ServiceBus,在从BrokeredMessage更改为Message的过程中,以下反序列化方法现在失败:

反序列化stream类型的对象时出错。输入源的格式不正确

问题就在错误中,但我不确定正确的新方法是什么,有点不清楚

连载

反序列化

Message.GetBody是使用旧版服务总线SDK WindowsAzure.ServiceBus包发送的消息的扩展方法,其中BrokeredMessage使用流以外的任何内容填充。如果您的发件人发送了一个字节数组,如您所示,则应使用Message.Body属性访问该数组

如果您的消息作为代理消息发送,则接收代码需要根据某些信息选择其中一种方法,以指示消息最初是如何发送的

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
                    };
    ```