2010-12-03 87 views
1

我们有一个动态加载控件的ASP.net表单[IIS 3.5上的.NET 3.5]。只要回发在20分钟内发生,我们就可以保留视图状态中的值。数据库也会正确更新。一切都按预期工作。向ASP.NET动态添加控件-viewstate在20分钟后不会被保留

但是,如果用户填写表单需要超过20分钟,则控件在回发期间不再保留其值。会话值完好无损,用户身份验证也完好无损。我们试图增加机键web.config文件中几件事情

1) - 我们有2 web服务器负载由Windows负载平衡器平衡

2)我们确认用户路由到同一台服务器 - 因为会话是粘

3)在IIS 6.0

4增加对连接池的空闲超时至60分钟

5)更改的形式认证TI增加会话超时到60分钟) cket超时到60分钟

任何帮助,将不胜感激。

-Thanks

+0

你的意思是“控件在回发期间不再保留它们的值”是什么意思?如果您有一个带有按钮和文本框的表单,请填写文本框并在20分钟后点击按钮,textbox.text属性在服务器上将为空。 – Greg 2010-12-03 18:24:26

回答

4

20分钟是应用程序池回收的默认超时时间。在服务器上运行IIS管理器,进入应用程序池属性,并取消单击“回收工作进程(分钟)”,或将其设置为60.

1

“粘性”会话并不意味着“总是转到同一台服务器” 。这只是一个建议。诚然,这是一个强大的,但仍然只是一个建议。负载均衡器通过保留客户端及其目标服务器的内存缓存来工作。这个内存是有限的,并定期垃圾收集。意思是,根据请求之间的时间长短,你可能会在服务器之间弹跳。

如果您在使用负载均衡机器的内存会话数据中使用,则必须1.停止使用会话或将后备存储更改为会话状态服务器或sql server。这是确保会话数据在所有目标服务器上实际可用的唯一方法。

您是如何确定会话和用户值仍然完好无损的?你只是猜测你是关于他们要去哪个服务器?

要彻底消除负载均衡作为罪魁祸首,请关闭其中一台机器。

0

问题可以在<sessionPageState historySize="9" />配置中。它控制会话中存储了多少“回发结果”。每个回发都将其ViewState记录到Session [“__ VIEWSTATEQUEUE”]中的队列末尾。