【问题标题】:Pesky "Invalid character in a Base-64 string." Exception讨厌的“Base-64 字符串中的无效字符。”例外
【发布时间】:2010-10-20 20:57:20
【问题描述】:

最近我的应用程序遇到了大量此类异常。

我在 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>

感谢您的帮助。

-丹尼尔

【问题讨论】:

  • 这些页面上的视图状态有多大?

标签: asp.net exception telerik


【解决方案1】:

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

如果 ViewState 没有正确反序列化,问题要么是 ASP.NET 无法正确解密,要么是页面上 ViewState 客户端字段的值发生了更改。您可以尝试在 web.config 中禁用加密:

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

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

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

【讨论】:

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