无负载均衡时IIS上共用相同MachineKey的应用是否存在数量限制
核心结论
.NET Framework 4.7.2 与 IIS 均未对共享同一 MachineKey 的应用/站点数量设置任何官方上限,你遇到的 Viewstate MAC 验证报错和共享 MachineKey 的应用数量无关,是站点间配置不匹配导致的。
报错原文:Validation of viewstate MAC failed. If this application is hosted by Web Farm or cluster, ensure that configuration specifies the same validationKey and validation algorithm.
常见问题排查点
- 确认所有站点的 MachineKey 配置完全一致:需保证
validationKey、decryptionKey明文数值,以及validation、decryption加密算法四个参数完全相同。注意排查是否存在新增站点未手动配置 MachineKey、默认继承了服务器级别自动生成的随机 MachineKey,或是加密算法和原有站点不一致(比如原有站点用SHA256、新增站点用SHA1)的情况。 - 检查所有站点的应用程序池 .NET Framework 版本是否统一:不同版本的 .NET Framework 加密实现存在差异,哪怕 MachineKey 完全相同也会出现 MAC 验证失败的问题。
- 验证 Viewstate 相关配置是否一致:检查所有站点 web.config 的
<pages>节点,enableViewStateMac属性值必须统一(.NET 4.7.2 默认为开启状态,若部分站点手动关闭也会导致不兼容),如果配置了viewStateEncryptionMode属性,该属性的取值也要所有站点保持一致。 - 排查跨站点提交场景:如果业务逻辑存在从A站点提交表单到B站点的情况,除了 MachineKey 一致外,还要确认所有站点的
viewStateUserKey属性没有配置差异化取值,否则也会触发 MAC 验证失败。
快速验证方案
你可以将新增站点的 web.config 替换为原有正常运行站点的配置,仅修改站点专属的目录、域名等配置后重新测试,如果报错消失即可确认是配置差异导致的问题。
内容的提问来源于stack exchange,提问作者rajat
相关产品推荐
相关产品推荐

