我有以下错误:
Validation of viewstate MAC failed.
If this application is hosted by a web Farm or cluster,
ensure that <machinekey> configuration specifies the same validationKey and validation algorithm.
Autogenerate cannot be used in a cluster.
http://go.microsoft.com/fwlink/?LinkID=314055
然后我按照该链接查找,问题是什么。基于该链接,该问题的第一个解决方案是创建显式元素。从PowerShell生成哪个更好。我试图从windows powershell运行脚本,但在将该脚本复制并粘贴到PowerShell屏幕后,我不知道结果在哪里。
有一些解决方法可以修复此错误消息。我有两个问题:
1.从Powershell生成的machineKey在哪里?我无法找到结果
2.有人知道如何解决这个错误吗?
谢谢。
答案 0 :(得分:1)
您可以在WEBROOT上设置machineKey,这是您可能需要的Web服务器场,具有以下内容
c:/Windows/System32/inetsrv/Appcmd.exe set config /section:machineKey /commit:WEBROOT /decryptionKey:$dk /validationKey:$vk
其中$ dk是你想要的decryptionKey,$ vk是你想要的validationKey。必须在服务器上安装IIS才能存在inetsrv / appcmd.exe。
您可以按照Noah Sparks的回答生成decryptionKey和validationKey并复制/粘贴结果,只要您想要与彼此关联的服务器具有相同的密钥,您就是金色的。我建议每个农场应用一组不同的密钥,即使它是针对两个不同域中的相同产品。
您还可以使用
以编程方式读取密钥 c:\Windows\System32\inetsrv\Appcmd.exe list /commit:WEBROOT config /section:machineKey
这对于故障排除可能会派上用场。
另外,我使用配置管理工具(在本例中为Chef)并从外部数据源读取密钥,因此我不必担心任何胖指法或脑屁并且有审计跟踪。
答案 1 :(得分:0)
如果您有权访问发生这种情况的IIS,您可以打开IIS,转到网站,在顶层有一个机器密钥图标。
打开它,取消选中中间部分的所有自动/自动生成选项,然后在右侧点击生成键&gt;保存。