【问题标题】:Invalid character in a base-64 string - ViewState?base-64 字符串中的无效字符 - ViewState?
【发布时间】:2012-01-04 17:15:30
【问题描述】:

Web 应用程序每天都会抛出一些此类错误。

Exception: System.FormatException: Invalid character in a Base-64 string.
   at System.Convert.FromBase64String(String s)
   at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString)
   at System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState)
   at System.Web.UI.HiddenFieldPageStatePersister.Load()

我认为错误来自解码 ViewState,但我在触发错误时遇到了麻烦。我从来没有能够在开发中触发错误,只有 prod。即使在产品中,我也无法轻松重现该错误。页面上有几个用于数据视图的过滤器,选择不同的值最终会引发错误,但不是我能弄清楚的任何模式。有时这是我第一次更换过滤器,有时没有组合。

【问题讨论】:

  • 当 ViewState 被回发时,是否有代理/firewill 可能会搞乱它?
  • 这不会引发安全异常吗?
  • 我们每天也有一些。我想黑客正在尝试奇怪的事情,以防它破坏您服务器中的某些东西。

标签: asp.net viewstate


【解决方案1】:

可能是以下原因之一:

  • 应用程序池回收
  • 服务器场或服务器集群
  • 代理服务器和病毒扫描程序

首先我会使用 machine.config 中的特定密钥来防止在每个进程启动时自动生成密钥

【讨论】:

  • 在进行此更改之前,我正在等待服务器管理员的回复。该服务器是一个临时服务器,但用作它托管的某些应用程序的生产。我一做出改变就会回来看看它是否有效。
  • 此服务器是服务器场的一部分,用于托管一些关键的 Web 应用程序,即使它应该是临时服务器。如果我使用特定的密钥,由于它是服务器场的一部分,这不会对这个或其他网络应用程序产生潜在的负面影响吗?由于所有其他网站都在此服务器上运行,我对进行机器级别的更改有点不舒服。
  • 如果您在属于同一服务器场的所有盒子上使用相同的密钥,则不会
猜你喜欢
  • 1970-01-01
  • 2011-03-04
  • 1970-01-01
  • 2010-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多