2015-12-22 33 views
1

我們正在將應用程序從使用MSMQ轉換爲Azure服務總線。我們有一個對象(消息,類型),看起來像這樣:Azure服務總線:從對象創建BrokeredMessage

[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); 

enter image description here

在看着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

您需要[DataContract]來裝飾你的郵件類,並且希望每個屬性與[DataMember]

+0

見上文編輯發送。你是這個意思嗎?我試過了,但我得到了同樣的結果。 –

+0

@CaseyCrookston是的,這就是我的意思。如果您還沒有收到您的消息,那麼問題可能在其他地方,而不是序列化。調試器無法顯示發送的消息的某些屬性的事實是預期的 - '''DeliveryCount'''等僅在接收時被初始化。如果你只是發送了一個字符串,而不是你的消息類,它會發生什麼? –