サービスバス上にメッセージを配置し、レガシー.NET 4.6受信者が読み取る必要のあるアプリケーションに.NET Core 2を使用しています。レシーバーは、他のレガシーアプリケーションからのメッセージもリスンします。Azureサービスバス - BrokeredMessage.GetBodyを使用して.NET Core 2から送信されたメッセージを読み取る
レガシー送信者:
UserData obj = new UserData()
{
id = 1,
name = "Alisha"
};
BrokeredMessage message = new BrokeredMessage(consentInstated);
_client.Send(message);
レガシー受信機:
var dataObj = objBrokeredMessage.GetBody<UserData>();
businessFunc(dataObj.id, dataObj.name);
.NETコア2差出人:https://stackoverflow.com/a/45069423/1773900
var ser = new System.Runtime.Serialization.DataContractSerializer(typeof(UserData));
var ms = new MemoryStream();
ser.WriteObject(ms, objUserData);
var message = new Message(ms.ToArray());
_client.Send(message);
に記載されるように
はしかし、レシーバはメッセージをデシリアライズに失敗し、次のエラーに
System.Runtime.Serialization.SerializationExceptionをスロー:タイプUserDataののオブジェクトをデシリアライズ にエラーが発生しました。入力ソースが正しくフォーマットされていない です。 ---> System.Xml.XmlException:入力 の入力が正しくフォーマットされていません。
両方の送信者を同じ受信者で使用できるようにするにはどうすればよいですか?
が同じに見えるhttps://stackoverflow.com/a/45069423/122195 – thepirat000
私はリンクで説明したのと同じ戦略を使用しました。 GetBody()はまだ解析エラーをスローします。 – lohiarahul