ViewState,Session和StateServer

时间:2012-04-12 16:49:16

标签: asp.net session webforms viewstate

我有一个复杂的,非常复杂的ASP.NET WebForm,有一个很大的ViewState。目前,为了降低浏览器的影响力(通过缩小__VIEWSTATE隐藏输入字段),我使用PageAdapterSessionPageStatePersisterViewState存储在Session中。

但是,我想将会话模式从InProc更改为StateServer,以便我可以降低RAM使用率并避免站点重启和应用程序池回收问题。我是否需要将ViewState拉出会话?或者它可以保持原样吗?

将来,我也想加载平衡,但我听说我可以使用“粘性会话”,这样就不会强迫我进入StateServer。

注意:我目前正在使用.NET 2.0(已集成),但我愿意更新。

2 个答案:

答案 0 :(得分:2)

在走这条路线之前我还会考虑其他一些选择......

我要研究的第一件事是ViewState压缩,它可以将ViewState的大小减少多达60%。 Telerik提供了一个很好的压缩模块,您可以找到here

其次,您可以在ViewState字段上设置最大长度,这将强制ASP.NET将ViewState划分为多个隐藏字段。这通常会产生更好的页面性能。您可以在PageStateFieldLength中设置web.config,如下所示:

<pages maxPageStateFieldLength="100"></pages>

答案 1 :(得分:0)

SessionPageStatePersister将您的Viewstate存储在会话碰巧存储的会话对象。它对于你的会话是InProc,SQL还是StateServer是完全不可知的,它应该继续工作而不必做任何事情。