我们正在将应用程序从使用MSMQ转换为Azure Service Bus。我们有一个对象(消息,类型),如下所示:
[Serializable]
public class LeadSubmissionMessage
{
public long LeadId { get; set; }
public long UserId { get; set; }
public DateTime DateTime { get; set; }
}
在从对象创建BrokeredMessage时,起初我认为它正在工作,因为它编译并没有抛出运行时错误,但是后来没有消息显示在服务总线中。因此,当我在调试中观察它时,我意识到它实际上并不是序列化对象。
BrokeredMessage brokeredMessage = new BrokeredMessage(message);
在查看other similar posts时,我尝试了这个:
BrokeredMessage brokeredMessage = new BrokeredMessage(message, new DataContractSerializer(typeof(LeadSubmissionMessage)));
但这会得到相同的结果。
我需要做什么才能使对象实际成为提交给消息的xml字符串?
修改
也试过这个。相同的结果:
[DataContract]
[Serializable]
public class LeadSubmissionMessage
{
[DataMember]
public long LeadId { get; set; }
[DataMember]
public long UserId { get; set; }
[DataMember]
public DateTime DateTime { get; set; }
}
答案 0 :(得分:1)
我这样定义类:
[DataContract]
[Serializable]
public class EventMessageDto
{
[DataMember]
public Guid EventId { get; set; }
[DataMember]
public string EventType { get; set; }
[DataMember]
public string EventData { get; set; }
}
并以此创建消息:
var message = new BrokeredMessage(eventMessageDto, new DataContractSerializer(typeof(EventMessageDto)));
我正在使用以下nuget软件包:WindowsAzure.ServiceBus.3.3.1
答案 1 :(得分:0)
您需要使用[DataContract]
装饰您的邮件类,并使用[DataMember]