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

时间:2021-11-09 18:31: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时出现的错误。而且不限于特定的页面,大部分页面都会出现此错误。

6 个解决方案

#1


http://topic.csdn.net/t/20060624/16/4841056.html

里面有回答,希望对你有帮助

#2


是encoding 的问题。

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

又或者该你的Encryption Algorithm

LZ 可以参考 ViewStateEncryptionMode 

#3


早看过了,我没有用到自己写的加解密,而且从上面的错误明细上能看出明显是POSTBACK时将StateView还原出现的错误。

#4


回2楼:我的是.net1.1,不是2.0.
而且我的aspx文件中并没有设置enableViewStateMac属性

#5


不知道友情帮顶

#6


开发人员在使用太大的视图状态方面碰到过一个问题,针对单独的字段基础浏览器可能不能反复地承载所有那些字节。由此造成的结果是,视图状态的内容被截断,而应用程序运行失败。在非常简单的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也出来了,这技术升级真的是一条没有终点的路.

#1


http://topic.csdn.net/t/20060624/16/4841056.html

里面有回答,希望对你有帮助

#2


是encoding 的问题。

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

又或者该你的Encryption Algorithm

LZ 可以参考 ViewStateEncryptionMode 

#3


早看过了,我没有用到自己写的加解密,而且从上面的错误明细上能看出明显是POSTBACK时将StateView还原出现的错误。

#4


回2楼:我的是.net1.1,不是2.0.
而且我的aspx文件中并没有设置enableViewStateMac属性

#5


不知道友情帮顶

#6


开发人员在使用太大的视图状态方面碰到过一个问题,针对单独的字段基础浏览器可能不能反复地承载所有那些字节。由此造成的结果是,视图状态的内容被截断,而应用程序运行失败。在非常简单的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也出来了,这技术升级真的是一条没有终点的路.