2010-07-15 27 views
1

在我的C#應用​​程序中,我收到MSMQ消息。有時郵件正文是我可以處理的XML,沒有任何問題。有時候這個消息可能是任何數據類型,所以我只需要把它放到一個數據庫表中。爲此,我需要將消息正文並將其轉換爲「byte []」類型。我的問題是,如何將消息正文轉換爲byte []?如何將MSMQ消息正文轉換爲字節[]?

回答

2

消息對象有一個BodyStream財產暴露身體的一個流,然後你就可以通過stuartd轉換爲使用該技術一個byte []在this answer.

+0

謝謝,這正是我所需要的。 – Retrocoder 2010-07-15 15:10:52

0

大廈關閉答案(讓其他人訪問此頁不需要打獵)...

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace MSMQReader 
{ 
    public class MSMQRead 
    { 
     public void DoIt() 
     { 
      var messageQueue = new System.Messaging.MessageQueue(@"FormatName:Direct=OS:<HOST NAME>\Private$\<PRIVATE QUEUE NAME>"); 
      var message = messageQueue.Receive(new TimeSpan(0, 0, 3)); // 3 SECOND TIMEOUT 
      var messageBody = ConvertStreamToByteArray(message.BodyStream); 
     } 


     public byte[] ConvertStreamToByteArray(System.IO.Stream input) 
     { 
      byte[] buffer = new byte[16 * 1024]; 

      using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) 
      { 
       int chunk; 

       while ((chunk = input.Read(buffer, 0, buffer.Length)) > 0) 
       { 
        ms.Write(buffer, 0, chunk); 
       } 

       return ms.ToArray(); 
      } 
     } 
    } 
}