2016-11-11 50 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。

相关问题