2

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

当它在 Intranet 设置中工作时,此保存表单并保留内容功能可以正常工作。但是,当将此站点部署到 Internet 以供公众访问时,表单的行为不一致。

表单提交工作正常几次(这个数字不断变化) - 它保存表单值并保留相同的内容,但后来随机显示来自先前数据条目的值。

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

Has this anything to do with some ViewState size limit or some IIS cache setting or due to it being deployed to a Farm? Can anyone explain why a form within a site that works on the Intranet doesn't work similarly when it is published as a Internet site?

4

1 回答 1

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>
于 2012-05-17T12:48:44.687 回答