原因是有一个特定的问题,一些随机的公司路由器/服务器/东西在VIEWSTATE中放置了后面跟有空格的惊叹号。
删除它们之后,VIEWSTATE很好并且可以反序列化(由View State Decoder 2确认,这是一个非常酷的程序)。
所以,我想做的是
我正在尝试覆盖System.Web.UI.Page中的 LoadPageStateFromPersistenceMedium 并从那里开始工作。还在努力......
答案 0 :(得分:0)
尝试使用以下方法:SavePageStateToPersistenceMedium
和LoadPageStateFromPersistenceMedium
,您可以在页面中覆盖这些方法。在那里,您可以截取在页面中呈现的VIEWSTATE或来自页面中隐藏字段的内容。
干杯!
更新 - 我曾经用它来压缩VIEWSTATE,所以也许你可以根据自己的需要进行更改。以下是压缩值从页面加载的方式(在您的情况下是带有空格的那个),解压缩的值被反序列化为实际的VIEWSTATE:
protected override object LoadPageStateFromPersistenceMedium()
{
string vsString = Request.Form["__COMPRESSEDVIEWSTATE"];
byte[] bytes = Convert.FromBase64String(vsString);
bytes = Compression.Decompress(bytes);
return formatter.Deserialize(Convert.ToBase64String(bytes));
}