c# - 什么会导致 Base64 解码抛出 FormatException
问题描述
我正在使用 C# 和 .NET 对 base64 字符串进行编码和解码。以下是我的代码片段:
Base64 编码:
using (var stream = new MemoryStream())
…...
return Convert.ToBase64String(stream.ToArray());
}
Base64 解码
byte[] bytes = Convert.FromBase64String(messageBody);
我的代码在 99% 的情况下都失败了,但有 1% 的机会成功。堆栈跟踪如下:
返回 5xx 错误:System.FormatException:输入不是有效的 Base-64 字符串,因为它包含非 base 64 字符、两个以上的填充字符或填充字符中的非法字符。在 System.Convert.FromBase64_ComputeResultLength(Char inputPtr, Int32 inputLength) 在 System.Convert.FromBase64CharPtr(Char* inputPtr, Int32 inputLength) 在 System.Convert.FromBase64String(String s)*
有谁知道什么会导致base64解码失败?我的编码和解码方法是对称的,我真的很困惑这个问题的根本原因是什么?
解决方案
感谢你的回复。
结果发现仍然有一些 Json 格式的旧消息之前未能传递并在我们的系统中不断重试;然而,我们接收方的新代码更改已部署,并且我们的接收方开始期待 protobuf 格式的消息,这导致在接收旧的 Json 格式消息时反序列化失败。
推荐阅读
- r - R: count times per column a condition is met and row names appear in a list
- python - 当组件为真时,为什么我的 python 2.7 代码会打印“假”?
- javascript - 将 sx 道具添加到自定义组件
- jenkins - 需要在 Jenkins 中输出脚本
- python - 正则表达式仅在包含小数时才允许前导零
- pine-script - newby 使用 pine-script 尝试获取多条件颜色以在直方图上绘制并转换为 v4
- firebase - 我想在flutter中从firestore到2个日期之间获取数据
- javascript - 使用带有 ajax 的 Php oop 登录失败
- json - 在 Swift 中解析的 JSON HTTP 请求有效负载被 Express 解释为 JSON 对象中的单个键——为什么?
- javascript - 从异步事件内部调用时,“阻塞”方法会阻止所有执行吗?