Base-64 字符串中的无效字符,错误!期待完美的解答
我做的网站,C#+SQLSERVER2000 .net版本:1.1
本机为WINXP,服务器为WIN2003,.net版本一致
下列现象本机调试从未出现过,但上传到服务器上,外网查看经常出错。
现象一、翻页时,翻着翻着就遇到类似“视图状态无效。。。。。”
现象二、还是翻页,现在改成“Base-64 字符串中的无效字符”了
现象三、如果某页上面有按钮,单击事件上面有重定向URL时,也会经常出现现象二。
异常详细信息: System.FormatException: Base-64 字符串中的无效字符。
[FormatException: Base-64 字符串中的无效字符。]
System.Convert.FromBase64String(String s) +0
System.Web.UI.LosFormatter.Deserialize(String input) +25
System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +101
[HttpException (0x80004005): Invalid_Viewstate
Client IP: 192.168.0.253
Port: 4956
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
ViewState: 一大串。。。。。
Http-Referer: http://www.tsjjw.cn/searchT.aspx
Path: /searchT.aspx.]
System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +447
System.Web.UI.Page.LoadPageViewState() +18
System.Web.UI.Page.ProcessRequestMain() +447
尝试过以下改动,但都不行
1、 <%@ Page language= "c# " ..... " enableViewStateMac= "False "%>
2、Machine.cfg中的配置节: " enableViewStateMac= "False "
3、web.config中的配置节: <globalization
requestEncoding= "gb2312 "
responseEncoding= "gb2312 "
/>
大家可以去http://www.tsjjw.cn/searchT.aspx,试一下
期待中.............
------解决方案--------------------看了一下,出错前页面上的viewstate隐藏域有5586字节,而回传到服务端的(也就是错误提示中的)只有5584字节,页面的viewstate多了两个字符“%2”,这“%”个字符不是base64 编码, 也就是说,页面上的viewstate已经不正确了,这样传回去,肯定无法反序列化的
至于为什么会这样,还不清楚