我在ASPX页面中有一个表单,可以节省&提交后保留内容,以便可以通过对某些字段进行细微更改来再次克隆内容。此功能旨在节省数据输入时间。
此保存表格&在Intranet设置中工作时,保持内容功能正常工作。但是,当此站点部署到Internet以进行公共访问时,表单行为不一致。
表单提交工作正常几次(此数字不断变化) - 它保存了表单值和&保留相同的内容,但稍后随机显示以前数据条目中的值。
例如,以5个字段的形式存储产品信息,我可以选择仅更改标题。第一次如果我为标题字段填写值“Product 1”,它将保存它&继续显示相同的字段值。继续这个过程,当我尝试将标题修改为“产品5”时,它可能无法保存该记录&显示“产品3”而不是按预期保留“产品5”。
这与某些ViewState大小限制或某些IIS缓存设置有关,还是由于它被部署到服务器场?任何人都可以解释为什么在Intranet上运行的网站中的表单在作为Internet站点发布时不会起作用吗?
答案 0 :(得分:1)
如果您正在使用会话状态并且应用程序已部署到负载平衡服务器场,则需要配置会话状态以使用SQL Server。
正在发生的事情是你正在打什么会话取决于你打的是什么盒子,所以当回发到达不同的服务器时,它会获得该服务器上会话中的任何内容。
以下是来自web.config的示例,如MSDN所示:
<configuration>
<system.web>
<sessionState mode="SQLServer"
sqlConnectionString="Integrated Security=SSPI;data
source=SampleSqlServer;" />
</system.web>
</configuration>
编辑: 因此,您没有使用会话状态,也没有触及代码中的任何值。这只留下了某种奇怪的缓存。也许服务器场的缓存设置在机器之间是不一样的...这是我能看到你得到你描述的行为的唯一方法。
您可以在web.config中覆盖machine.config缓存设置。尝试:
<system.web>
<httpRuntime enableKernelModeCache="false"/>
</system.web>