ASP.NET PageViewState会话状态持久性

时间:2014-07-08 04:30:59

标签: c# asp.net session-state page-state

这就是我做的事情

  1. 在Corelibrary下创建了一个新文件夹。
  2. 将其命名为“Adapters”
  3. 在“Adapters”下,创建了一个新的类文件。
  4. 将类文件命名为“PageStateAdapter.cs”
  5. 从“PageStateAdapter.cs”
  6. 中的PageAdapter类扩展
  7. 为GetStatePersister()添加覆盖,如下所示。
  8. 代码:

    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. 下创建了一个浏览器文件
    3. 在浏览器中添加了以下内容。将文件命名为“Default.browser”

      <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>
      
    4. 确保adapterType属性与为页面状态适配器创建的类命名空间匹配。

    5. 由于某些奇怪的原因,这段代码只能在Chrome中使用。当我说不起作用时,我的意思是,页面加载正常,但视图状态是一个很大的混乱。但是在IE和Firefox中,视图状态很小,页面加载速度更快。

      我接下来要做的是在不同的用户代理下在Fiddler中加载页面,如果用户代理是chrome,则会出现同样混乱的视图状态。

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

1 个答案:

答案 0 :(得分:1)

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

相关问题