惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The GitHub Blog
The GitHub Blog
Martin Fowler
Martin Fowler
Vercel News
Vercel News
U
Unit 42
Engineering at Meta
Engineering at Meta
aimingoo的专栏
aimingoo的专栏
MyScale Blog
MyScale Blog
Y
Y Combinator Blog
阮一峰的网络日志
阮一峰的网络日志
爱范儿
爱范儿
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
B
Blog RSS Feed
N
Netflix TechBlog - Medium
GbyAI
GbyAI
F
Fortinet All Blogs
MongoDB | Blog
MongoDB | Blog
大猫的无限游戏
大猫的无限游戏
C
Check Point Blog
M
MIT News - Artificial intelligence
D
Docker
IT之家
IT之家
Stack Overflow Blog
Stack Overflow Blog

博客园 - 林石

[转].NET Core、Xamarin、.NET Standard和.NET Framework四者之间的区别 .NET工行E生活接入AES加密算法的吐槽-2018 [转]MYSQL性能查看(命中率,慢查询) 可遇不可求的Question之MySql4.0前版本不支持union与批量SQL提交 Cookie的几点忠告 可遇不可求的Question之MySqlClient的Guid 类型的映射篇 可遇不可求的Question之SQLSERVER触发器不支持多行插入操作篇 可遇不可求的Question之Sqlserver2005文件组的迁移篇 可遇不可求的Question之INSERT … ON DUPLICATE KEY UPDATE 语法篇 可遇不可求的Question之Mysql在不重启服务的情况下修改运行时变量篇 可遇不可求的Question之MySQL系统变量interactive_timeout 与 wait_timeout 篇 可遇不可求的Question之flash的socket连接安全策略文件篇 可遇不可求的Question之error: Failed dependencies: MySQLconflicts 错误篇 可遇不可求的Question之导入mysql中文乱码解决方法篇 Codesmith怎么判断sqlserver数据库字段是不是标识自增字段 可遇不可求的Question之skip-name-resolve模式篇 MySQL Error Codes MYSQL的错误代码 [转]如何成为强大的程序员? 可遇不可求的Question之Silverlight完美加密工具deepsea篇
可遇不可求的Question之反序列化时出现“base-64 字符数组的无...
林石 · 2013-01-16 · via 博客园 - 林石

题设:

    程序中实现了这样一个功能,将一个对象序列化后,作为参数传递给另一个页面,这个页面得到参数并反序列化后还原此对象,但是在运行时有时正常,有时出现“base-64 字符数组的无效长度”的错误提示。

分析:

     在网上查找资料,都是说在使用Convert.ToBase64String()方法对字符串进行Base64编码时,需要使参数的长度等于4或4的偶数倍数,否则将抛出“FormatException”异常。但是我这里使用的参数是使用Convert.ToBase64String()方法生成的,理论上是没有问题的。于是对比用Convert.ToBase64String()生成的字符串A与反序列化前Convert.ToBase64String()所使用的参数字符串B,发现A与B之间有差异,A中的加号变成了空格。这是由于网页传递参数时,会将加号编码成空格,但是在解码时却不会解码空格,结果就造成了字符串B不正确,无法背编码。

解决:

    确认了问题就好办了,在得到序列化字符串后,使用String.Replace("+", "%2B")先将空格编码,然后再作为参数传给另一页面传递,这样页面在提取参数时才会将“%2B”解码为加号,参数没有差别,在执行反序列化成功就通过了。