我在这没什么可说的.我无法在本地复制此信息,但当用户收到错误时,我会自动收到邮箱异常通知:

Invalid length for a Base-64 char array.

  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.HiddenFieldPageStatePersister.Load()

我倾向于认为分配给viewstate的数据存在问题.

List<int> SelectedActionIDList = GetSelectedActionIDList();
ViewState["_SelectedActionIDList"] = SelectedActionIDList;

如果不能在本地重现错误,就很难猜测错误的来源.

如果有人有过这个错误的经验,我真的很想知道你发现了什么.

推荐答案

我见过这种错误是由大小合适的viewstate和过于激进的内容过滤设备/防火墙(尤其是在与K-12教育机构打交道时)组合而成的.

我们通过将视图状态存储在SQL Server中来解决此问题.在执行此操作之前,我建议您try 限制ViewState的使用,方法是不在其中存储任何较大的内容,并对所有不需要的控件将其关闭.

References for storing ViewState in SQL Server:
MSDN - Overview of PageStatePersister
ASP Alliance - Simple method to store viewstate in SQL Server
Code Project - ViewState Provider Model

Asp.net相关问答推荐

502 DotNet WebApplication的网关nginx已损坏

是否可以发布 ASP.NET 5 应用程序以使目标机器不需要安装 DNX?

取消选中时 ASP.NET CheckBox 不会触发 CheckedChanged 事件

模型项的类型为 CookMeIndexViewModel,但需要类型为 IEnumerable 的模型项

ASP.NET 控件无法在 Visual Studio 2008 的代码隐藏中引用

Directory.Exists 不适用于网络路径

ASP.NET 在更新面板更新时显示正在加载...消息

带有邮箱地址参数的 WebApi 方法从 HttpClient 返回 404

会话变量保存在哪里?

反序列化客户端 AJAX JSON 日期

ASP.NET 上的 WebSockets 教程

如何在 asp net core api 中使用 Created(或 CreatedAtAction / CreatedAtRoute)

有条件地排除 ASP.NET WebForms 中的一个 html 块

如何在实体框架中添加表?

对于 DB ID,需要一个较小的 GUID 替代方案,但对于 URL 仍然是唯一且随机的

如何在 GridView 中隐藏 TemplateField 列

IIS url 重写角色,除了一些 url

如何将 GridView.DataSource 导出到数据表或数据集?

为什么 Controls 集合不提供所有 IEnumerable 方法?

可以在不 destruct 站点的情况下将 MIME 类型添加到 web.config 吗?