0

这就是我所做的

  1. 在 Corelibrary 下创建了一个新文件夹。
  2. 将其命名为“适配器”</li>
  3. 在“适配器”下,创建了一个新的类文件。
  4. 将类文件命名为“PageStateAdapter.cs”</li>
  5. 从“PageStateAdapter.cs”中的 PageAdapter 类扩展</li>
  6. 为 GetStatePersister() 添加一个覆盖,如下所示。

代码:

using System.Web.UI;
using System.Web.UI.Adapters;

namespace eRecruitCore.Adapters
{
   public class PageStateAdapter : PageAdapter
   {
       public override PageStatePersister GetStatePersister()
       {
           return new SessionPageStatePersister(this.Page);
       }
    }
 }
  1. 在 Web->App-Browsers 下创建了一个浏览器文件
  2. 在浏览器中添加了以下内容。将文件命名为“Default.browser”</p>

    <browsers>
    <browser refID="Default">
      <controlAdapters>
      <adapter controlType="System.Web.UI.Page" adapterType="Corelibrary.Adapters.PageStateAdapter" />
    </controlAdapters>
    <capabilities>
      <capability name="requiresControlStateInSession" value="true" />
    </capabilities>
    </browser>
    </browsers>
    
  3. 确保 adapterType 属性与为页面状态适配器创建的类命名空间相匹配。

出于某种奇怪的原因,这段代码仅在 Chrome 中不起作用。当我说不起作用时,我的意思是,页面加载正常,但视图状态是一团糟。但是在 IE 和 Firefox 中,视图状态很小,页面加载速度更快。

我做的下一件事是在不同的用户代理下加载 Fiddler 中的页面,如果用户代理是 chrome,那么会出现同样混乱的视图状态。

我已经多次检查代码,我写了一个示例站点来测试。这在 Chrome 上运行良好。我真的不知道在哪里看。对此的任何帮助表示赞赏。

4

1 回答 1

1

我解决了这个问题。对于一个旧问题,代码正在清除所有适配器。我对其进行了修改,以便修复仅清除那些需要的适配器。现在它的工作没有问题。

于 2014-07-08T05:31:10.367 回答