-2

我有以下错误:

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.有人知道如何解决这个错误吗?

谢谢你。

4

2 回答 2

1

您可以在 WEBROOT 上设置 machineKey,这可能是您可能想要的 Web 服务器场,使用以下内容

c:/Windows/System32/inetsrv/Appcmd.exe set config /section:machineKey /commit:WEBROOT /decryptionKey:$dk /validationKey:$vk

其中 $dk 是您想要的解密密钥,而 $vk 是您想要的验证密钥。必须在您的服务器上安装 IIS 才能使 inetsrv/appcmd.exe 存在。

您可以通过遵循 Noah Sparks 的回答并复制/粘贴结果来生成 decryptionKey 和 validationKey,只要您希望彼此关联的服务器具有相同的密钥,您就是黄金。我建议每个农场应用一组不同的密钥,即使它用于两个不同域中的相同产品。

您还可以使用以编程方式读取密钥

c:\Windows\System32\inetsrv\Appcmd.exe list /commit:WEBROOT config /section:machineKey

这对于故障排除可能会派上用场。

顺便说一句,我使用配置管理工具(在本例中为厨师)并从外部数据源读取密钥,因此我不必担心任何肥胖的指法或脑放屁,并且有审计线索。

于 2017-04-05T20:50:08.273 回答
0

如果您可以访问发生这种情况的 IIS,您可以打开 IIS,访问网站,在顶层有一个机器钥匙图标。

打开它,取消选中中间部分的所有自动/自动生成选项,然后在右侧点击生成键>保存。

于 2014-09-08T12:48:35.460 回答