• 主页
  • ASP
  • .NET Framework
  • Web Services
  • VB
  • VC
  • 图表区
  • 分析与设计
  • 组件/控件开发
  • LINQ

高分求解“Base-64 字符数组的无效长度。”错误

ldljlq 优美世界 IT经理  2007-12-23 02:13:24
Base-64 字符数组的无效长度。

HttpMethod:POST
UserBrowserVersion:7.0
UserSystem:WinXP

System.FormatException: Base-64 字符数组的无效长度。 at System.Convert.FromBase64String(String s) at System.Web.UI.LosFormatter.Deserialize(String input) at System.Web.UI.Page.LoadPageStateFromPersistenceMedium()
=========================================

此问题频繁出现,找不到原因,我知道Base-64要求字符串长度必须是4的整数倍,可是我没有进行单独的加解密,从错误上看得出是在页面初始化载入StateView时出现的错误。而且不限于特定的页面,大部分页面都会出现此错误。
...全文
1669 点赞 收藏 6
写回复
6 条回复
ldljlq 2007年12月23日
开发人员在使用太大的视图状态方面碰到过一个问题,针对单独的字段基础浏览器可能不能反复地承载所有那些字节。由此造成的结果是,视图状态的内容被截断,而应用程序运行失败。在非常简单的Web浏览器上,诸如Microsoft WebTV和个人数字助理(PDA),非常有可能发生这种情况。在ASP.NET 1.x中要解决这个问题,只能采取不怕麻烦的方法。我们派生一个自定义的页面类,重写读写视图状态信息的方法,并使该类把视图状态信息保留在服务器上。在ASP.NET 2.0中,有一种更简单的解决方法:就是使用maxPageStateFieldLength。如果视图状态的真正大小超过该属性所设的上限,ASP.NET自动地将视图状态分割成块,并使用多个隐藏字段向下发送它。例如,如果把maxPageStateFieldLength设置为5,则页面包含以下内容:

<input type="hidden" id="__VIEWSTATEFIELDCOUNT" value="..." />

<input type="hidden" id="__VIEWSTATE" value="/wEPD" />

<input type="hidden" id="__VIEWSTATE1" value="wUKLT" />

<input type="hidden" id="__VIEWSTATE2" value="I2MjI" />

客户页面的最终字节计数即使比默认情况高一点儿,但是因为被分割的视图状态在简单的并且不是太强大的Web浏览器上,至少我们的页面不会失败。

===========================================================

看来.net1.1已经被MS放弃了,逼着我们转向更高的版本.今天看到了VS2008和.net3.5也出来了,这技术升级真的是一条没有终点的路.

回复 点赞
weir55 2007年12月23日
不知道友情帮顶
回复 点赞
ldljlq 2007年12月23日
回2楼:我的是.net1.1,不是2.0.
而且我的aspx文件中并没有设置enableViewStateMac属性
回复 点赞
ldljlq 2007年12月23日
早看过了,我没有用到自己写的加解密,而且从上面的错误明细上能看出明显是POSTBACK时将StateView还原出现的错误。
回复 点赞
dmarkplus 2007年12月23日
是encoding 的问题。

可能要改你的buffer size 大于被读的file size。

又或者该你的Encryption Algorithm

LZ 可以参考ViewStateEncryptionMode
回复 点赞
kbryant 2007年12月23日
http://topic.csdn.net/t/20060624/16/4841056.html

里面有回答,希望对你有帮助
回复 点赞
发动态
发帖子
.NET技术社区
创建于2007-09-28

4.9w+

社区成员

66.8w+

社区内容

.NET技术交流专区
社区公告
暂无公告