serialization - Azure 服务总线消息反序列化在核心转换中中断
问题描述
因此,我创建了一个新的 Azure Functions 项目 v3,并正在移植 v1 中在 4.6.2 上运行的函数子集,同时将其余函数作为过时的函数弃用。不幸的是,由于从 Microsoft.ServiceBus.Messaging 更改为 Microsoft.Azure.ServiceBus,从 BrokeredMessage 更改为 Message 时,以下反序列化方法现在失败:
反序列化流类型的对象时出错。输入源的格式不正确。
问题就在错误中,但我不确定正确的新方法是什么,它有点不清楚。
连载
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
};
```
解决方案
Message.GetBody<T>()
是使用旧版服务总线 SDK(WindowsAzure.ServiceBus 包)发送的消息的扩展方法,其中BrokeredMessage
填充了Stream
. 如果您的发件人如您所展示的那样发送一个字节数组,您应该使用Message.Body
属性访问它。
如果您的消息以BrokeredMessage
.
推荐阅读
- javascript - useState 初始值未设置
- php - 从刀片中的外键获取数据
- azure - Azure 蓝图分配卡在“正在部署”状态 - 冻结在无限循环中
- django - 您如何计算查询集中的对象总数,并在 CreateView 通用视图中显示总数?
- css - 基于 css-filename 的 css-only 条件 @import
- excel - 基于另一个向列添加 1
- java - 在 Appium 中使用 Pagefactory 时出现 NullpointerException 错误
- c# - LINQ - 从父列表中选择孙列表匹配条件
- django - Django在提交表单后清空显示值
- html - 如何在 HTML 表格中设置字体大小?