反序列化时出现“base-64 字符数组的无效长度”错误提示的解决
程序中实现了这样一个功能,将一个对象序列化后,作为参数传递给另一个页面,这个页面得到参数并反序列化后还原此对象,但是在运行时有时正常,有时出现“base-64 字符数组的无效长度”的错误提示。
在网上查找资料,都是说在使用Convert.ToBase64String()方法对字符串进行Base64编码时,需要使参数的长度等于4或4的偶数倍数,否则将抛出“FormatException”异常。但是我这里使用的参数是使用Convert.ToBase64String()方法生成的,理论上是没有问题的。于是对比用Convert.ToBase64String()生成的字符串A与反序列化前Convert.ToBase64String()所使用的参数字符串B,发现A与B之间有差异,A中的加号变成了空格。这是由于网页传递参数时,会将加号编码成空格,但是在解码时却不会解码空格,结果就造成了字符串B不正确,无法背编码。
确认了问题就好办了,在得到序列化字符串后,使用String.Replace("+", "%2B")先将空格编码,然后再作为参数传给另一页面传递,这样页面在提取参数时才会将“%2B”解码为加号,参数没有差别,在执行反序列化成功就通过了。
转载于:https://www.cnblogs.com/window07/archive/2009/07/22/1528838.html
反序列化时出现“base-64 字符数组的无效长度”错误提示的解决相关推荐
- “base-64 字符数组的无效长度”错误解决方案
"base-64 字符数组的无效长度"错误解决方案 参考文章: (1)"base-64 字符数组的无效长度"错误解决方案 (2)https://www.cnbl ...
- base-64 字符数组的无效长度
在处理JS签名以后,生产图片时,将签名生产的图片base64传到后台,转换为Bitmap时,总是提示:抛出"base-64 字符数组的无效长度"这样的错误,在网上查询了一下,原来生 ...
- 手机程序安装时几种有错误提示的解决办法
错误提示一:证书过期 问题说明:软件证书过期. 解决办法:1:把手机时间调到证书的期限内(把手机时间往前调几个月)再安装,安装完毕后调回正确时间 ...
- c语言字符数组的实际长度,C语言中,当计算字符数组长度时,用sizeof 和strlen 的原理及两者的区别...
1:定义时用字符初始化 (1)char chs[7] = {'a', 'c', '0', 'z', '3','d'}; // 长度为6 上式等价于: (2)char chs[7] = {'a', 'c ...
- zend studio php 错误提示,如何解决Win7打开启动ZendStudio PHP时提示错误
最近有一用户在Windows7系统中打开WZend Studio软件时,弹出了错误提示Failed to create the Java Virtual Machine的问题,导致无法正常启动该软件, ...
- 下列c语言字符数组的描述中错误的是,下列对C语言字符数组的描述中错误的是( )...
摘要: ,下列包括主要,方面三个.字符:下中国大学的是列不荷兰画家属于.若用二叉作为结构存储链表,数组述中曼树则该中总指针共有个空域哈夫,子结的叶点总夫曼设哈树中数为.... ,下列包括主要,方面三个 ...
- 对c语言字符数组描述错误的是,下述对C语言字符数组的描述中错误的是( )。
摘要: 条形图用频率值型来表分组分布示数数据,下述没有相邻之间间隔竖条.中国:在中大学列联分析,字符百分表的条件正确关于的是方向说法.条形图用频率值型来表分组分布示数数据,数组述中没有相邻之间间隔竖条 ...
- Unity - But the dll is not allowed to be included or could not be found 打包时错误提示的解决方法
当第一次打包时碰到这个,问题,还真是挺烦的,但这却又是谁都会碰到的问题 这个链接,我真是第一次看到高赞,但不是真实的答案的 dll is not allowed to be included or c ...
- c语言中当二维数组越界时会有错误提示,萌新请教大佬们。动态二维数组莫名其妙越界了,找了半天没发现有错啊...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include using namespace std; int main() { int n,i; cin>>n; int **p=new ...
- 关于安装VS2005或MSDN时遇到“Please insert the disk:XXXXXXX” 错误提示的解决方法!...
1.将VS2005或MSDN光盘放进DVD-ROM 或 用虚拟光驱软件导入光盘镜像. 2.将该光驱共享 3.添加网络驱动器映射(开始->运行,输入:) 例子: net use k: \\电脑IP ...
最新文章
- Uva 11300 分金币
- python推荐系统-RecQ-Python推荐系统框架
- 数据库元数据数据字典查询_5_列出给定表的主键、外键约束
- linux启动过程及内核裁剪,裁剪测试Linux启动流程
- mysql8支持myISAM_mysql8 参考手册--优化MyISAM表
- win7 双屏 双工具栏_不知道这几个双屏操作技巧,你的显示器就白买了
- ASP.NET MVC 过滤器(五)
- 常用api查询网站记录
- 下面属于python内置对象的有哪些_Python内置对象实现的方法及注意事项
- 元月元日是哪一天_2020年下元节是哪一天 几月几号
- 【CV学习笔记】色彩空间
- 1、position用法技巧,2、CSS 属性 选择器,3、CSS 选择器
- secoclient全版本下载分享
- 海思移植 APR(Apache Portable Runtime)
- js判断浏览器类型,判断ie内核,webkit
- AI 仿人类人工智能(超级智能)的本质
- unable to find encoder for type stored in a dataset的解决方法
- 如何快速发表第一篇高水平论文
- mysql高德地图设计_基于高德开放平台Map Lab的数据可视化
- 超详细Shell学习教程第二篇