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

发布于 2025-01-17 00:29:26 字数 940 浏览 5 评论 0原文

因此,我有一个 azure 函数,它在将对象放入 azure 队列之前以 Base64 对其进行编码,然后在下一个函数中对对象进行解码和反序列化。 编码和发送它的代码在这里:

var trackIdAndUserid = new TrackIdAndUserId { TrackId = track.Track.Id, UserId = track.UserId };
var message = JsonConvert.SerializeObject(trackIdAndUserid);
buffer = Encoding.Unicode.GetBytes(message);
string msg = Convert.ToBase64String(buffer);
await queueClient.SendMessageAsync(msg);

队列上的示例消息是

ewAiAFQAcgBhAGMAawBJAGQAIgA6ACIAMABpADQAbgBIAGEANwB3AEwAQwBYADEAMQBNADcAeQBJAHAANwBpAFQASgAiACwAIgBVAHMAZQByAEkAZAAiADoAIgAzADgAMAA5AGYANQBjADMALQA4ADEANABmAC0ANABmADYAYwAtAGIAYwAzAGMALQBhAGYANgA3AGYANAAwAGQAMwBlADMAZgAiAH0A

解码它的代码在这里:

byte[] buffer = Convert.FromBase64String(myQueueItemStringBase64);
string myQueueItemString = Encoding.Unicode.GetString(buffer);
var myQueueItem = JsonConvert.DeserializeObject<TrackIdAndUserId>(myQueueItemString);

So I have an azure function that encodes an object in Base64 before putting it on an azure queue and then the object is decoded and deserilized in the next function.
The code for encoding it and sending it is here:

var trackIdAndUserid = new TrackIdAndUserId { TrackId = track.Track.Id, UserId = track.UserId };
var message = JsonConvert.SerializeObject(trackIdAndUserid);
buffer = Encoding.Unicode.GetBytes(message);
string msg = Convert.ToBase64String(buffer);
await queueClient.SendMessageAsync(msg);

An example message on the queue is

ewAiAFQAcgBhAGMAawBJAGQAIgA6ACIAMABpADQAbgBIAGEANwB3AEwAQwBYADEAMQBNADcAeQBJAHAANwBpAFQASgAiACwAIgBVAHMAZQByAEkAZAAiADoAIgAzADgAMAA5AGYANQBjADMALQA4ADEANABmAC0ANABmADYAYwAtAGIAYwAzAGMALQBhAGYANgA3AGYANAAwAGQAMwBlADMAZgAiAH0A

The code to decode it is here:

byte[] buffer = Convert.FromBase64String(myQueueItemStringBase64);
string myQueueItemString = Encoding.Unicode.GetString(buffer);
var myQueueItem = JsonConvert.DeserializeObject<TrackIdAndUserId>(myQueueItemString);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

画▽骨i 2025-01-24 00:29:26

我通过添加队列客户端选项并将选项中的编码设置为 base64 来修复它

var queueClient = new QueueClient(configuration["AzureWebJobsStorage"], "add-track-to-cosmos", new QueueClientOptions { MessageEncoding = QueueMessageEncoding.Base64});

I fixed it by adding a queue client options and setting the encoding in the options to base64

var queueClient = new QueueClient(configuration["AzureWebJobsStorage"], "add-track-to-cosmos", new QueueClientOptions { MessageEncoding = QueueMessageEncoding.Base64});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文