假设您有一个不依赖于会话的aspx页面,但依赖于viewstate来表示回发之间的持久性.
如果用户正在访问此页面并离开长时间的午餐,那么当他返回时,viewstate仍然有效吗?
Viewstate本身不会过期.由于它以表格形式发布,因此可以随时重新组合.
根据MSDN:".如果页面未在会话到期时间内回发,则视图状态可能会过期 ".因此,在某种方式中,如果您的会话执行,它可能会过期,但viewstate不会直接过期.由于您还没有使用会话状态,因此您不必担心隐式过期.
请注意,我不会说它过期了.那是我在他们自己的题为" 控制ViewState"的文章中引用的MS
没有ViewState作为PostBack过程的一部分保留.但是,您可以覆盖 Page类的SavePageStateToPersistenceMedium()和LoadPageStateFromPersistenceMedium(),以在需要时实现该行为.有关更多信息,请参阅了解ASP.NET ViewState.
请注意,Page ViewState存储在Session中,因此如果Session过期,ViewState将丢失.我不会说这是ViewState到期,但是,它会在会话超时后被销毁.
Viewstate不会过期.
所有视图状态数据都存储在客户端上,并在用户执行回发时提交回服务器.
这有一些非常有趣的含义,在这里进行了非常彻底的解释.
此外,作为一个问题,ASP.NET默认使用自动生成的密钥加密ViewState.这可以使用web.congif文件中的MachineKey元素覆盖.即使ViewState不会过期,如果使用不同的自动生成的密钥来解密ViewState,例如在IIS重置,重新部署应用程序或命中Web场中的其他服务器之后,它也会变为无效.如果您计划长时间存储视图状态,请注意它是如何加密/解密的.
http://msdn.microsoft.com/en-us/library/ms998288.aspx
是的,ViewState在某些条件下到期.例如,当您使用iframe时,或者当您通过常规回发维护与服务器的"实时"连接时.然后你可能想要研究这个选项:
它实际上硬编码会话中存储了多少"回发结果"(如果使用了SessionPageStatePerster).每个回发将它的ViewState存储到Session ["__ VIEWSTATEQUEUE"]中Queue的末尾,并删除"太旧"的ViewStates.你认为SessionPageStatePerster如何通过在web.config中配置一些任意的historySize-constant来决定哪些ViewStates太旧了?Omg!我也永远找到这个问题......我对asp.net编程的仇恨现在已经无法形容了...... grrr ......