2016-11-11 67 views
4

我沒有可能將我的請求編碼到base64,並根據我不應該的文件,但我無法弄清楚。REST:將消息添加到沒有base64編碼的azure存儲隊列中?

如果我Base64編碼,它的正常工作:

<QueueMessage> 
<MessageText>PHNhbXBsZT5zYW1wbGUgbWVzc2FnZTwvc2FtcGxlPg==</MessageText> 
</QueueMessage> 

它增加了解碼的消息隊列:

<sample>sample message</sample> 

根據文檔(https://msdn.microsoft.com/sv-se/library/azure/dd179346.aspx

消息必須採用可包含在採用UTF-8編碼的XML請求 中的格式。要在消息中包含標記, 的內容必須是XML轉義或Base64編碼。消息未被轉義或編碼的任何XML 標記在將消息添加到隊列之前將被刪除 。

試圖增加(而不是PHNhbXBsZT5zYW1wbGUgbWVzc2FnZTwvc2FtcGxlPg ==):

&lt;sample&gt;sample message&lt;/sample&gt; 

成功,但試圖它僅與響應隊列,以查看該消息時:

輸入不一個有效的Base-64字符串,因爲它包含填充字符中的非base 64 字符,多於兩個填充字符或非法字符 。

有人知道如何發送正確的原始xml轉義的請求消息到存儲隊列嗎?

全部請求(不帶按鍵和名稱):

POST https://xxxxxxx.queue.core.windows.net/testqueue/messages?sv=2015-04-05&ss=q&srt=sco&sp=a&se=2026-11-11T20:24:03Z&st=2016-11-11T12:24:03Z&spr=https&sig=xxxxxxxxxxxxxxxxx%3D HTTP/1.1 
User-Agent: Fiddler 
Host: XXXXX.queue.core.windows.net 
Content-Type: text/plain 
Content-Length: 64 

<QueueMessage> 
<MessageText>&lt;sample&gt;sample message&lt;/sample&gt;</MessageText> 
</QueueMessage> 
+0

你是如何查看消息的?你正在使用一些工具嗎? –

+0

我正在從Visual Studios查看它們(2015)Cloud Explorer – thllbrg

+0

這可能是Cloud Explorer的問題。你可以嘗試在其他工具中查看消息嗎? –

回答

1

我得到的格式錯誤調用AsString屬性,因爲消息從存儲隊列返回信息,默認情況下,base64編碼。

CloudQueue對象具有設置爲true的EncodeMessage屬性。將其切換爲false並且一切正常。這裏是我的代碼:

CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient(); 
CloudQueue queue = queueClient.GetQueueReference(ClientQueueName); 
queue.EncodeMessage = false; 
CloudQueueMessage retrievedMessage = queue.GetMessage(); 

ClientQueueName是一個字符串,它保存Azure上我的隊列的名稱。我認爲在發送之前該屬性需要設置爲false。

相關問題