Pesky“Base-64字符串中的字符无效。”例外

时间:2010-10-20 20:57:21

标签: asp.net exception telerik

最近我的应用程序已经获得了大量的例外情况。

我在Windows XP机器上运行ASP.net 3.5。例外往往是随机的。

该应用程序使用Telerik RadControls for ASP.NET AJAX Q2 2010 SP1。

异常和StackTrace在下面。

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

关于可能导致这种情况的任何想法?此外,这可能或可能不相关,通常是具有适当数据量(大于2分钟加载时间)的页面随机超时。我在web.config中增加了每个长时间加载页面的超时...

<location path="mypage.aspx">
 <system.web>
  <httpRuntime executionTimeout="1920"/>
 </system.web>
</location>

感谢您的帮助。

-Daniel

1 个答案:

答案 0 :(得分:-1)

查看您的应用程序池/网站是否因某种原因(例如内存或时间限制)重新启动。

如果ViewState未正确反序列化,则问题是ASP.NET无法正确解密,或者某些内容更改了页面上ViewState客户端字段的值。您可以尝试在web.config中禁用加密:

<system.web>
 <pages viewStateEncryptionMode=”Never”>
 </pages>
</system.web>

由于第二个原因,可能是防火墙或项目的其他部分正在修改ViewState。检查您是否使用了任何优化代码并尝试禁用它。

最后,您可以尝试为某些不需要它的控件禁用ViewState以减小其大小,或者您可以尝试使用web.config中的maxPageStateFieldLength属性将输入拆分为几个较小的。 / p>