【问题标题】:ASP.NET Web Farm with 4.0 and 4.5.1 causes Invalid postback or callback argument exceptions带有 4.0 和 4.5.1 的 ASP.NET Web Farm 导致无效的回发或回调参数异常
【发布时间】:2014-01-23 13:30:07
【问题描述】:

我有一个网站在负载均衡器后面的网络场中运行。我在每个服务器上的每个 web.config 文件中都有一个一致的 <machineKey /> 元素。直到最近,所有服务器都运行 .NET 4.0(未安装 .NET 4.5)。今天早上,我向农场介绍了一台新服务器,它运行与现有服务器完全相同的代码和配置,但它安装了 .NET 4.5.1。

我正在使用以下内容在所有服务器上定位 .NET 4.0

<compilation targetFramework="4.0">

还有一个这样的 machineKey 元素(为安全起见删除了键值):

<system.web>
    <machineKey decryptionKey="..." validationKey="..." />
</system.web>

即使 targetFramework 是 4.0,.NET 4.0 处理验证或加密/解密的方式是否与 .NET 4.5.1 不同?

【问题讨论】:

  • 这个blogs.msdn.com/b/webdev/archive/2012/10/23/… 建议它应该向后兼容,除非您以显式方式打开 4.5 模式。
  • 我也是这么读的,@WiktorZychla,但在我们的情况下,我们没有预期的行为。我的下一个想法是创建一个新的 machineKey 元素,它明确指定验证和解密方法,看看这是否会有所不同。

标签: asp.net .net


【解决方案1】:

网络场中的每台计算机都必须安装完全相同版本的 ASP.NET。不支持在场中混合运行 4.0 和 4.5.1。

也就是说,有两种方法可以执行升级:

  1. 使场的一半脱机,将脱机计算机升级到 4.5.1,然后同时将这些计算机带回场,同时使剩余的一半脱机。然后更新剩余的离线机器并将它们带回。

  2. 如果您绝对需要执行就地升级,请在 Web.config (see MSDN) 中将 开关 aspnet:UseLegacyEventValidationCompatibility 设置为“true”,然后选择一个将您的机器升级到 4.5.1。这不是受支持的配置,但应该可以工作。 当务之急不要让这个 开关保持任何时间,因此请务必在升级完成后将其从 Web.config 中删除。

【讨论】:

  • 我想知道这是否是我们正在尝试做的受支持的事情 - 感谢您的反馈,非常有帮助!
  • 有任何外部参考来支持这个吗?
  • Wiktor,具体备份什么部分? 官方不支持混合部署?我来自产品团队,所以我是主要来源。如果你打电话给客户支持,他们会告诉你同样的事情,所以这可能是外部验证。
  • @Levi 也引用了一篇 MSDN 文章来支持他的评论。
猜你喜欢
  • 2011-11-20
  • 1970-01-01
  • 2015-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 2014-11-18
相关资源
最近更新 更多