Convert.FromBase64String(...) 抛出了一个格式异常。

4
以下代码在IIS Express中会运行良好:
Convert.FromBase64String("dmVoaWNsZUlkPTE0MTM=??");

但是当在我的本地 IIS 8 服务器 上运行时,它会抛出以下异常:

System.FormatException: 输入不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、超过两个填充字符或填充字符中有非法字符。

为什么会发生这种情况?


1
根据 MSDN 的说明:http://msdn.microsoft.com/en-us/library/system.convert.frombase64string(v=vs.71).aspx,如果“忽略空格字符后的 s 的长度不是 4 的倍数”,则会抛出异常。 但为什么在 IIS Express 上可以正常工作呢……很奇怪。 - wojtuch
1个回答

14

最后两个字符 "??" 在base64字符串中无效。

请参阅此处:https://zh.wikipedia.org/wiki/Base64

该字符串应以字母数字字符结尾,或者用一个或多个=字符进行填充。

编辑 — 去掉?字符后解码该字符串返回 "vehicleId=1413",所以只需将其移除即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接