移动ViewState服务器端

msi*_*man 1 asp.net

好的,我有一个ASP.NET应用程序,我正在努力减少页面的开销(我们的用户拥有平均10年的PC).

其中一种方法是移动ViewState服务器端.我们有足够的RAM.

我遵循了最常被引用的模式:http://authors.aspalliance.com/robertb/articles.aspx?articleId = 2

因为它是在7年前编写的,所以我不得不更新一些过时的函数,即RegisterHiddenField到ScriptManager.RegisterHiddenField和ConfigurationSettings.AppSettings到ConfigurationManager.AppSettings.

这似乎工作得相当好,但是一旦我做了AJAX回发,我就会收到错误

Microsoft JScript runtime error: Sys.WebForms.PageRequestManagerServerErrorException: The state information is invalid for this page and might be corrupted.
Run Code Online (Sandbox Code Playgroud)

我还注意到,每个页面上现在有两个隐藏的"__VIEWSTATE"字段,其中一个是空的,其中一个字段具有我班级的数值.我认为这与问题有关 - 也许AJAX更新试图从空的而不是具有值的那个读取?

有谁知道为什么会出现这个错误?

msi*_*man 5

答案是根本不使用提供的示例.它已经过时了,现在框架本身提供了更好的解决方案.

protected override PageStatePersister PageStatePersister
{
    get { return new SessionPageStatePersister(this); }
} 
Run Code Online (Sandbox Code Playgroud)

我刚刚将这4行添加到我的BasePage类中,并且instant即时〜大约30%的页面大小减少,并且它与AJAX更新一起工作正常.