2016-12-07 74 views
1

當我傳送GUID作爲messgage和收到它,消息變得奇怪:消息從得到奇怪:服務總線/ BrokeredMessage

@ guid3http://schemas.microsoft.com/2003/10/Serialization/$ ed92ba5c-68ed-2a4c-8d89-0a087e47ef11

任何想法,爲什麼我不只Guid作爲消息?

發件人:

public void Post(Guid id) { 
      var connectionString = "X"; 
      var queueName = "Send"; 

      var client = QueueClient.CreateFromConnectionString(connectionString, queueName); 
      var message = new BrokeredMessage(id);  

      client.Send(message);     
     } 

接收機:

public string ReadPost() { 
      var connectionString = "X"; 
      var queueName = "Send"; 

      var client = QueueClient.CreateFromConnectionString(connectionString, queueName); 
      var message = client.Receive(TimeSpan.FromMinutes(1)); 

      var stream = message?.GetBody<Stream>(); 
      if (stream == null) { return null; } 

      var reader = new StreamReader(stream); 
      var textFromBody = reader.ReadToEnd(); 

      message.Complete(); 

      return textFromBody; 
     } 

回答

1

試試這個:的

message.GetBody<Guid>(); 

不但得不到流。

服務總線隊列使用DataContractSerializer來序列化消息正文,這就是你所看到的。

+0

謝謝,我可以刪除'reader'和'textFromBody'並返回Guid而不是:'var getGuid = message?.GetBody ();'安全嗎?我第一次使用服務總線。編輯:我問,如果StreamReader功能是必不可少的保持或不爲我的目的。 – Muppen

+0

是的,你不需要那兩個。你已經有GetBody的Guid了。不要忘記在成功處理完消息後再完成消息,以免再次出現。 – juunas

+0

太棒了!謝謝 :) – Muppen

相關問題