【问题标题】:Invalid ViewState / Invalid character in a Base-64 string无效的 ViewState / Base-64 字符串中的无效字符
【发布时间】:2016-06-24 00:14:17
【问题描述】:

我已经阅读了多个类似的帖子。例如:

但没有人为我提供解决方案。我知道出了什么问题,我会尝试遍历我的代码。

这种情况每天只发生在少数用户身上,而且他们都使用 IE。 Firefox 可以正常工作。

我有一个 aspx 页面,其中包含我的网上商店的注册表单。当用户单击“继续”时,我会进行回发以验证数据。如果一切正常,我运行以下代码:

public void Proceed(Object sender, EventArgs e)
{
   if (IsValid)
   {
      SaveCustomerInfo();
      ScriptManager.RegisterStartupScript(
          this, this.GetType(),
          "RedirectPaymentGateway",
          "RedirectPaymentGateway('" + paymentData + "');", true);
   }
}

此脚本将用户重定向到支付网关,如下所示:

function RedirectPaymentGateway(paymentData) {
    $(document).ready(function() {
        try {
            var div = document.createElement('div');
            div.innerHTML = paymentData;                
            var formDataObj = jQuery.parseJSON(div.firstChild.nodeValue);

            var form = "<form>FORM CONSTRUCTION</form>";

            $('#pnlPaymentGateway').html(form);
            $('#pnlPaymentGateway').submit();
        }
        catch (e) {
            alert(e);
        }            
    });
}

paymentData 是 .net 对象的 JSON 序列化。)

我猜这段代码会破坏与视图状态相关的内容,但我不知道如何或为什么。有什么建议吗?

【问题讨论】:

  • 一个页面上的多个表单在ASP.NET中无效
  • 我知道,但是第二个表单是在 asp.net 表单标签之外呈现的。
  • 所以当服务器接收到该表单的内容时,ViewState 没有被返回,因此出现了错误。
  • 但是我不能理解的是服务器并没有得到那个表单的内容,表单是在回发后通过jQuery渲染和提交的。为什么这对几乎所有用户都有效,除了少数不幸的用户?

标签: c# asp.net viewstate


【解决方案1】:

我刚遇到一个用户的这个问题。它只发生在 IE 上,而不是所有用户。 Firefox 和 Chrome 运行良好。

要解决此问题,请打开 IE 并执行以下操作:

  1. 单击工具。 (您可能需要先通过右键单击顶部栏来启用菜单栏。)
  2. 点击 Internet 选项。
  3. 单击“高级”选项卡。
  4. 点击重置。
  5. 选中该框以删除个人设置。
  6. 确认直到返回 IE。
  7. 重启浏览器。

问题将得到解决。

【讨论】:

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