为什么Intranet站点不缓存表单值,但部署到Internet的站点相同?

时间:2012-05-17 12:33:38

标签: asp.net viewstate browser-cache intranet

我在ASPX页面中有一个表单,可以节省&提交后保留内容,以便可以通过对某些字段进行细微更改来再次克隆内容。此功能旨在节省数据输入时间。

此保存表格&在Intranet设置中工作时,保持内容功能正常工作。但是,当此站点部署到Internet以进行公共访问时,表单行为不一致。

表单提交工作正常几次(此数字不断变化) - 它保存了表单值和&保留相同的内容,但稍后随机显示以前数据条目中的值。

例如,以5个字段的形式存储产品信息,我可以选择仅更改标题。第一次如果我为标题字段填写值“Product 1”,它将保存它&继续显示相同的字段值。继续这个过程,当我尝试将标题修改为“产品5”时,它可能无法保存该记录&显示“产品3”而不是按预期保留“产品5”。

这与某些ViewState大小限制或某些IIS缓存设置有关,还是由于它被部署到服务器场?任何人都可以解释为什么在Intranet上运行的网站中的表单在作为Internet站点发布时不会起作用吗?

1 个答案:

答案 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>