【问题标题】:Validation of viewstate MAC failed across different servers跨不同服务器的视图状态 MAC 验证失败
【发布时间】:2015-09-19 18:02:28
【问题描述】:

我有一个包含 2 台服务器的 ASP.Net WebForms 应用程序池,其中 1 台是 2k3,另外 1 台是新添加的 2k8 R2。我已将我的应用程序配置为始终加密视图状态,例如

<pages enableViewState="false" validateRequest="true" viewStateEncryptionMode="Always"/>

已在服务器上将 machine.config 设置为相同的加密/解密算法和密钥。我有一个负载均衡器在各个盒子之间分配流量,当来自一台服务器的初始请求发回另一台服务器时,我得到以下异常:

System.Web.HttpException:视图状态 MAC 验证失败。如果此应用程序由 Web Farm 或集群托管,请确保 配置指定相同的验证密钥和验证算法。 AutoGenerate 不能在集群中使用

我尝试在应用程序级别的 web.config 中设置 machineKey 元素,但我遇到了同样的问题。此错误是否以任何方式归结为 IIS 或 O/S 差异?

【问题讨论】:

    标签: asp.net iis encryption


    【解决方案1】:

    您可以从developersfusion 生成机器密钥并将其添加到您的 web.config。

    【讨论】:

    • 您好,我已经在两台服务器的 machine.config 和 web.config 中设置了相同的密钥。有什么方法可以验证 IIS 6 应用程序正在使用的 machineKey?
    【解决方案2】:

    我们通过将所有未完成的 Windows 更新修补程序/补丁应用到 2003 服务器来设法解决了这个问题。这涉及许多 .Net 2.0 框架更新。

    【讨论】:

      猜你喜欢
      • 2019-10-26
      • 2010-09-24
      • 2011-12-18
      相关资源
      最近更新 更多