我有一个复杂的,非常复杂的ASP.NET WebForm,它有一个大的ViewState。目前,为了降低对浏览器的影响(通过缩小__VIEWSTATE隐藏输入字段),我使用PageAdapter和SessionPageStatePersister将ViewState存储在Session中。
但是,我希望将会话模式从InProc更改为StateServer,这样既可以降低内存使用率,又可以避免站点重启和应用程序池回收问题。我是否需要将ViewState从会话中拉回?或者它可以保持原样?
将来,我也会想要负载均衡,但我听说我可以只使用“粘性会话”,所以这可能不会强迫我使用StateServer。
注意:我目前使用的是.NET 2.0 (集成),但我对更新它持开放态度。
发布于 2012-04-13 01:03:54
SessionPageStatePersister将视图状态存储在Session对象中,无论您的会话是在哪里存储的。它完全不知道你的会话是InProc,SQL还是StateServer,它应该继续工作,而不需要你做任何事情。
发布于 2012-04-13 01:30:18
在走那条路之前,我还会考虑一些其他的选择。
我要考虑的第一件事是ViewState压缩,它可以将ViewState的大小减少多达60%。Telerik提供了一个很好的压缩模块,你可以找到here
其次,您可以在ViewState字段上设置最大长度,这将强制ASP.NET在多个隐藏字段中划分ViewState。这通常会产生更好的页面性能。您可以像这样在web.config中设置PageStateFieldLength:
<pages maxPageStateFieldLength="100"></pages>https://stackoverflow.com/questions/10128079
复制相似问题