Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c++;Azure存储队列正在发送错误类型的字符串 我继承了一个C++应用程序(其中IM没有专家,IM .NET家伙),它将消息发送到一个JSON表单的Azure队列。这很好,当我尝试在我的.NET控制台应用程序中从队列中选取消息时,会显示以下消息:_C#_C++_Azure_Azure Storage - Fatal编程技术网

C# c++;Azure存储队列正在发送错误类型的字符串 我继承了一个C++应用程序(其中IM没有专家,IM .NET家伙),它将消息发送到一个JSON表单的Azure队列。这很好,当我尝试在我的.NET控制台应用程序中从队列中选取消息时,会显示以下消息:

C# c++;Azure存储队列正在发送错误类型的字符串 我继承了一个C++应用程序(其中IM没有专家,IM .NET家伙),它将消息发送到一个JSON表单的Azure队列。这很好,当我尝试在我的.NET控制台应用程序中从队列中选取消息时,会显示以下消息:,c#,c++,azure,azure-storage,C#,C++,Azure,Azure Storage,“输入不是有效的Base-64字符串,因为它包含一个非Base-64字符、两个以上的填充字符或填充字符中的一个非空白字符。” < > C++代码看起来像这样(注意注释的哑消息,它给出了它的样子) 我甚至可以在存储资源管理器中看到以下消息: 但它的格式似乎不正确,就像我从队列中选取消息时: CloudStorageAccount storageAccount = CloudStorageAccount.Parse(GetConnectionString()); CloudQueu

“输入不是有效的Base-64字符串,因为它包含一个非Base-64字符、两个以上的填充字符或填充字符中的一个非空白字符。”

< > C++代码看起来像这样(注意注释的哑消息,它给出了它的样子)

我甚至可以在存储资源管理器中看到以下消息:

但它的格式似乎不正确,就像我从队列中选取消息时:

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(GetConnectionString());
        CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();

        CloudQueueClient clnt = storageAccount.CreateCloudQueueClient();
        CloudQueue queue = clnt.GetQueueReference("bogus");
        queue.EncodeMessage = true;

        List<Service> userServices = null;

        CloudQueueMessage retrievedMessage = queue.GetMessage();
        List<CloudAppItem> items = JsonConvert.DeserializeObject<List<CloudAppItem>>(queue.GetMessage().AsString);
CloudStorageAccount-storageAccount=CloudStorageAccount.Parse(GetConnectionString());
CloudQueueClient=storageAccount.CreateCloudQueueClient();
CloudQueueClient clnt=storageAccount.CreateCloudQueueClient();
CloudQueue=clnt.GetQueueReference(“伪”);
queue.EncodeMessage=true;
List userServices=null;
CloudQueueMessage retrievedMessage=queue.GetMessage();
列表项=JsonConvert.DeserializeObject(queue.GetMessage().AsString);
它在最后一行失败了。这不是因为序列化程序。queue.GetMessage().AsString返回错误

更新(仍不工作)

我取出了encodedmessage语句,因为我以前曾尝试将其添加到中以使其工作。它仍然不起作用。我还显示了原始字符串,由于它是类上的私有方法,因此不可访问:


出现此错误的原因是,您指示SDK从base64编码的字符串解码消息,但消息内容不是base64编码的(您将消息保存为纯文本)

请更改以下代码行:

queue.EncodeMessage = true;

这应该可以解决问题。从文件:

获取或设置一个值,该值指示在 添加或检索消息

我取出了encodedmessage语句,因为我以前曾尝试将其添加到中以使其工作。它仍然不起作用

在中,我们可以发现您只需删除
queue.EncodeMessage=true,但的默认值为true,请显式将CloudQueue.EncodeMessage设置为false

CloudQueueClient clnt = storageAccount.CreateCloudQueueClient();
CloudQueue queue = clnt.GetQueueReference("bogus");
queue.EncodeMessage = false;  //explicitly set CloudQueue.EncodeMessage to false

谢谢你的帮助,不过我故意把它放进去看看是否会有所不同。它不起作用。我还在上面添加了另一个显示原始字符串的屏幕截图,这是一个显示字符串本身的私有方法,但不可访问。似乎有效。非常感谢。我不知道为什么我没有那样做!
queue.EncodeMessage = false;
CloudQueueClient clnt = storageAccount.CreateCloudQueueClient();
CloudQueue queue = clnt.GetQueueReference("bogus");
queue.EncodeMessage = false;  //explicitly set CloudQueue.EncodeMessage to false