【发布时间】:2012-04-12 16:49:15
【问题描述】:
我有一个复杂的、非常复杂的 ASP.NET WebForm 和一个大的 ViewState。目前,为了降低对浏览器的影响(通过缩小 __VIEWSTATE 隐藏输入字段),我使用PageAdapter 和SessionPageStatePersister 将ViewState 存储在Session 中。
但是,我想将会话模式从 InProc 更改为 StateServer,这样既可以降低 RAM 使用率,又可以避免站点重新启动和应用程序池回收问题。我是否需要将 ViewState 从 Session 中撤出?还是可以保持原样?
将来,我也想进行负载平衡,但我听说我可以只使用“粘性会话”,这样可能不会强迫我进入 StateServer。
注意:我目前正在使用 .NET 2.0(集成),但我愿意更新它。
【问题讨论】:
-
您应该没有问题,因为 ViewState 是可序列化的。但是,我强烈建议您阅读 Scott Hanselman 对此的看法 - hanselman.com/blog/… - 我们在具有大 ViewStates 的页面上相当有效地使用了 HttpCompression,因此避免了任何会话内存成本。粘性会话只会确保用户访问单个服务器;如果您今天内存不足,那么它们将无济于事 - 如果用户能够针对每个请求访问不同的服务器,它们只能帮助解决您必须以其他方式分配状态的问题。
标签: asp.net session webforms viewstate