そのため、新しい Azure Functions プロジェクト v3 を作成し、4.6.2 で実行されていた v1 から関数のサブセットを移植していますが、残りは古いものとして廃止しています。残念ながら、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
};
```