2013-03-12 128 views
1

我目前有一个asp.net网站,用于存储服务器端的所有viewstate。我遇到过一个问题。我有一个登陆页面,在GridView中列出了一些统计数据,每一行都有一个“查看”按钮,这个按钮会转到一个页面,其中包含所选统计数据的详细列表。Asp.net缓存查询

如果用户使用后退按钮返回到主列表,并在重复10次重复初始着陆页失去所有状态后重复按下“查看”​​按钮的过程。我已经通过在web配置中设置<sessionPageState historySize="40">来解决这个问题,该配置允许上述过程重复40次,直到初始着陆页失去所有状态并需要完全重新加载。

现在,这里解决了这个问题,但显然当其他页面出现问题时,用户使用网站的其余部分时导致会话状态很大。解决这个问题的最佳方法是什么?

由于

+0

对于初学者来说,'View State'不存储在服务器端。它是ASP.NET页面上隐藏字段中的客户端。你试图完成什么?你可能应该使用'Session'而不是'View State' – 2013-03-12 19:49:49

+0

也许他已经覆盖PageStatePersister – NickD 2013-03-12 19:57:17

+0

是的,我覆盖了PageStatePersister,很遗憾错过了有助于设置: Pixelstiltskin 2013-03-12 20:37:24

回答

-1

View State被设计用于存储在页面上的对象的状态被加载。它不是存储在服务器端,它是页面控件的集合,它们的值是以页面发出的Base 64编码字符串。

要在页面之间传递数据,您应该查看Session,只要用户处于活动状态(直到会话过期或您手动终止该数据),该数据就会持续存在。

+1

当你说session时,你的意思是缓存吗? http://brockallen.com/2012/04/07/think-twice-about-using-session-state/ – felickz 2013-03-12 19:57:24

+0

@felickz没有关于提问者做什么的更多细节'Session'是我的第一个建议,因为它不是设置复杂。对所有情况来说都不是好事,但对所有情况都没有错。我想传达给提问者的基础是考虑使用一些ASP.NET缓存机制,它不是为多页面场景中的单个页面场景设计的。 – 2013-03-12 20:09:11