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
可能要改你的buffer size 大于被读的file size。
又或者该你的Encryption Algorithm
LZ 可以参考 ViewStateEncryptionMode
#3
早看过了,我没有用到自己写的加解密,而且从上面的错误明细上能看出明显是POSTBACK时将StateView还原出现的错误。
#4
回2楼:我的是.net1.1,不是2.0.
而且我的aspx文件中并没有设置enableViewStateMac属性
而且我的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也出来了,这技术升级真的是一条没有终点的路.
<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
可能要改你的buffer size 大于被读的file size。
又或者该你的Encryption Algorithm
LZ 可以参考 ViewStateEncryptionMode
#3
早看过了,我没有用到自己写的加解密,而且从上面的错误明细上能看出明显是POSTBACK时将StateView还原出现的错误。
#4
回2楼:我的是.net1.1,不是2.0.
而且我的aspx文件中并没有设置enableViewStateMac属性
而且我的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也出来了,这技术升级真的是一条没有终点的路.
<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也出来了,这技术升级真的是一条没有终点的路.