서비스 버스에 메시지를 넣고 레거시 .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);
,617,451에 기재된
그러나, 리시버는 메시지를 역 직렬화하는 데 실패하고 다음 오류를
System.Runtime.Serialization.SerializationException 예외 : userdata 형의 객체를 직렬화 복원 오류가 발생했습니다. 입력 소스가 올바르게 포맷되지 않은 입니다. ---> System.Xml.XmlException : 입력의 형식이 잘못되었습니다.
두 수신자를 동일한 수신자와 함께 사용하려면 어떻게해야합니까?
는 상기와 동일하게 보이는 https://stackoverflow.com/a/45069423/122195 – thepirat000
본인은 링크에서 설명한 것과 동일한 전략을 사용했습니다. GetBody()는 여전히 구문 분석 오류를 발생시킵니다. – lohiarahul