【发布时间】:2012-12-21 15:04:17
【问题描述】:
我们正在使用 ASP.NET 视图状态来存储我们自己的对象(即,不仅仅是原始类型)。每次我们进行构建时,构建号都会增加。我们正在尝试解决的问题是在服务器更新期间:
- 用户加载页面
- 我们部署了新版本的 Web 应用程序
-
用户在同一页面上导致回发,并抛出异常:
- HttpException:此页面的状态信息无效,可能已损坏。
- ViewStateException:无效的视图状态。
- ArgumentException:序列化数据无效。
- FileLoadException:无法加载文件或程序集“[我们的程序集],Version=[我们的新版本],Culture=neutral,PublicKeyToken=...”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配
我明白为什么会发生这种情况 - ViewState 已使用该类的先前版本进行序列化,然后尝试使用新版本进行反序列化,而 .NET 序列化不支持。
我们考虑过创建自定义 PageStatePersister 并使用 JSON(然后对其进行加密)来序列化/反序列化,因为数据成员在构建之间几乎总是兼容的。
还有其他想法吗?
【问题讨论】:
标签: asp.net .net json deployment viewstate