【问题标题】:"Invalid Character in Base-64 String" using ASP.NET and C#使用 ASP.NET 和 C# 的“Base-64 字符串中的无效字符”
【发布时间】:2009-06-26 20:07:02
【问题描述】:

我在发布页面时遇到了这个问题。该页面有一个由下拉列表的 onchange 调用的 jquery ajax 加载,如果我禁用 onchange,则帖子有效。

“此页面的状态信息无效,可能已损坏”

[FormatException: Invalid character in a Base-64 string.]
   System.Convert.FromBase64String(String s) +0
   System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) +72
   System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState) +4
   System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState) +37
   System.Web.UI.HiddenFieldPageStatePersister.Load() +113

[ViewStateException: invalid Viewstate. 
         Client IP: 127.0.0.1
         Port: 
         User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
         ViewState: /wEPDwULLTE1NjAwNjAwNDMPZBYCZg9kFgRmD2QWAgIOD2QWCAIBDxYCHgRUZXh0BSpTcGVyaW5kZSBJbcOzdmVpcyAmcnNhcXVvOyBQw6FnaW5hIEluaWNpYWxkAgMPFgIfAAUOdmVuZGFyLCBhbHVnYXJkAgUPFgIfAGVkAgcPFgIfAAUaaHR0cDovL3d3dy5zcGVyaW5kZS5jb20uYnJkAgEPZBYQAgMPEGQQFQEPVGlwbyBkZSBJbcOzdmVsFQEAFCsDAWdkZAIEDxBkEBUBBkNpZGFkZRUBABQrAwFnZGQCBg8QZA8WAWYWARAFD1RpcG8gZGUgSW3Ds3ZlbGVnZGQCBw8QD2QWAh4Ib25jaGFuZ2UFGSQuY2hhbmdlQ2l0eSh0aGlzLnZhbHVlKTsPFgFmFgEQBQZDaWRhZGVlZ2RkAggPZBYQAgEPFgIfAAUMTE9GVCBWSVNDQVlBZAIDDxYCHwAFKUNhc2EgMyBkb3JtaXTDs3Jpb3Mgbm8gYmFpcnJvIEJlbGEgVmlzdGEuZAIHDxYCHwAFHjxzdHJvbmc+UiQgMjUwLjAwMCwwMDwvc3Ryb25nPmQCCQ8WAh8ABRUxNTYwLjQ0IG08c3VwPjI8L3N1cD5kAgsPFgIfAAUJMyBlIDQgIEQuZAINDw8WBh8ABRBFeGNsdWlyIGRhIGxpc3RhHgdUb29sVGlwBRBFeGNsdWlyIGRhIGxpc3RhHgtOYXZpZ2F0ZVVybAUUI3JlbW92ZUxpbmsgMjEwMDM3NzlkZAIPDw8WBh8DBUB+L3ZlbmRhL2xhbmNhbWVudG...]

[HttpException (0x80004005): As informações sobre estado são inválidas para esta página e podem estar corrompidas.]
   System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) +106
   System.Web.UI.ViewStateException.ThrowViewStateError(Exception inner, String persistedState) +14
   System.Web.UI.HiddenFieldPageStatePersister.Load() +217
   System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +105
   System.Web.UI.Page.LoadAllState() +43
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +6785
   System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +242
   System.Web.UI.Page.ProcessRequest() +80
   System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) +21
   System.Web.UI.Page.ProcessRequest(HttpContext context) +49
   ASP.content_search_default_aspx.ProcessRequest(HttpContext context) in c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\web-site-2009\e4bfc9d6\d5d6c855\App_Web_zcb1qfmu.0.cs:0
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +181
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75

这可能是什么原因?以前有人见过吗?

谢谢

编辑:

所以,我找到了发生这种情况的原因。在 Page_Load 结束时,我编写了一个 javascript 行,它调用一个将新字段加载到 div 中的 jquery 函数。因此,正如我所见,这导致在视图状态上产生不一致。在这种情况下,禁用 ViewState 不是一个选项。它适用于 FF,它在 IE 上存在错误。有人吗?

谢谢

【问题讨论】:

    标签: c# asp.net-ajax


    【解决方案1】:

    刚刚碰到这个。从您通过 jquery 加载的页面中删除表单标签。

    【讨论】:

    • 我所做的是使用 jquery.remove() 从第二个表单中删除额外的 __VIEWSTATE
    【解决方案2】:

    遇到同样的问题,我收到错误的原因是因为我将完整的表单作为字符串发送到 javascript 方法中,然后该方法发布了表单。

    这有点繁重,我的解决方法是只将表单数据作为序列化的 json 发送,然后通过 javascript 创建并发布表单,就像在这篇文章中一样。

    http://weblogs.asp.net/hajan/archive/2011/03/16/posting-from-asp-net-webforms-page-to-another-url.aspx

    【讨论】:

      【解决方案3】:

      无效的视图状态对您的记录器、用户或您的网站没有任何价值 为避免此错误,请尝试在 Global.ascx 中添加以下内容:

      void Application_Error(object sender, EventArgs e)
          {          
                      if (ex is HttpException && ex.InnerException is ViewStateException)
                      {
                          Response.Redirect(Request.Url.AbsoluteUri);
                          return;
                      }
          }
      

      欲了解更多信息,请查看以下链接:

      https://www.karpach.com/viewstateexception-invalid-viewstate.htm

      【讨论】:

        猜你喜欢
        • 2010-12-07
        • 1970-01-01
        • 2011-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-11
        • 1970-01-01
        相关资源
        最近更新 更多