我做的网站,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,试一下期待中.............

解决方案 »

  1.   

    http://support.microsoft.com/kb/831150/
      

  2.   

    http://community.csdn.net/Expert/topic/5374/5374463.xml?temp=0.245497065710601
      

  3.   

    看了一下,出错前页面上的viewstate隐藏域有5586字节,而回传到服务端的(也就是错误提示中的)只有5584字节,页面的viewstate多了两个字符“%2”,这“%”个字符不是base64 编码, 也就是说,页面上的viewstate已经不正确了,这样传回去,肯定无法反序列化的至于为什么会这样,还不清楚
      

  4.   

    为什么要出现这种情况呢?如何禁用整站的VIEWSTATE的验证?
    我在VS 2003的IDE中发现每个页面DOCUMENT的ENABLEVIEWSTATEMAC默认都是FALSE的,难道要我在几十个页面一个个手工修改?
      

  5.   

    <pages enableViewState="true" enableViewStateMac="false"></pages>
    这个我也在根目录下的web.config中加上了,还是出现这种错误,真晕了
      

  6.   

    我找了好久解决了。
    是form重复问题。我页面上用了几个jq的ajax,get方法取得别的页面数据,回传中有form。
    删除请求页面的form就可以了