C# 是否将消息添加到azure存储队列而不使用base64编码?

C# 是否将消息添加到azure存储队列而不使用base64编码?,c#,azure,rest,azure-queues,C#,Azure,Rest,Azure Queues,我不可能将我的请求编码到base64,根据文档,我不应该这样做,但我无法理解 如果我使用Base64编码,它工作正常: PHNHBXBSZYT5ZYW1WBGUGBWVZC2FNZTWVC2FTCGXLPG== 将解码的消息添加到队列: 示例消息 根据文件() 消息的格式必须可以包含在XML请求中 使用UTF-8编码。要在消息中包含标记,请将 消息必须是XML转义或Base64编码。任何XML 消息中未转义或编码的标记将被删除 将消息添加到队列之前 正在尝试添加(而不是phnhbxbszt

我不可能将我的请求编码到base64,根据文档,我不应该这样做,但我无法理解

如果我使用Base64编码,它工作正常:


PHNHBXBSZYT5ZYW1WBGUGBWVZC2FNZTWVC2FTCGXLPG==
将解码的消息添加到队列:

示例消息
根据文件()

消息的格式必须可以包含在XML请求中 使用UTF-8编码。要在消息中包含标记,请将 消息必须是XML转义或Base64编码。任何XML 消息中未转义或编码的标记将被删除 将消息添加到队列之前

正在尝试添加(而不是phnhbxbsztt5zyw1wbgugbwvzc2fnztwvc2ftcgxlpg==):

成功,但当尝试查看队列中的消息时,它只响应:

输入不是有效的Base-64字符串,因为它包含非Base-64字符串 字符、两个以上填充字符或非法字符 在填充字符中

有人知道如何向存储队列发送正确的原始xml转义请求消息吗

完整请求(无键和名称):

POSThttps://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=XXXXXXXXXXXXXX%3D HTTP/1.1
用户代理:Fiddler
主机:XXXXX.queue.core.windows.net
内容类型:文本/纯文本
内容长度:64
示例示例示例消息/示例

调用AsString属性时,我收到格式错误,因为从存储队列返回的消息在默认情况下是base64编码的

CloudQueue对象的EncodeMessage属性设置为true。将其切换为false,一切正常。这是我的密码:

 CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
 CloudQueue queue = queueClient.GetQueueReference(ClientQueueName);
 queue.EncodeMessage = false;
 CloudQueueMessage retrievedMessage = queue.GetMessage();
ClientQueueName是一个字符串,其中包含Azure上我的队列的名称。我认为在发送之前,在您的情况下,属性也需要设置为false。

。现在已经过时了。你应该使用
QueueClient
没有
EncodeMessage
属性,但是您可以在注入服务时指定
MessageEncoding

builder.Services.AddAzureClients(builder=>{
builder.AddQueueServiceClient()
.ConfigureOptions(o=>o.MessageEncoding=QueueMessageEncoding.None);
}

您是如何查看这些信息的?您是否为此使用了一些工具?我正在Visual Studio(2015)中查看这些信息云资源管理器这可能是云资源管理器的问题。您可以尝试使用其他工具查看邮件吗?我可以使用Microsoft Azure云资源管理器查看邮件,但它似乎试图解码base64编码的字符串,“�������^��,J������" 在我的例子中,我希望它解码xml转义字符串。请尝试Cerburata Azure Management Studio或Cloud Portam(披露:我是构建这些工具的团队的一员)。
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>
 CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
 CloudQueue queue = queueClient.GetQueueReference(ClientQueueName);
 queue.EncodeMessage = false;
 CloudQueueMessage retrievedMessage = queue.GetMessage();