1

そのため、新しい 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
                    };
    ```
4

1 に答える 1