验证viewstate MAC失败,尝试生成机器密钥

时间:2014-01-09 11:19:47

标签: c# asp.net iis

'/'应用程序中的服务器错误。
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.

我已经查看过无数先前的问题,但我还没有设法让它发挥作用。

我编辑了我的web.config文件并包含生成的密钥但没有成功。

的Web.config

<?xml version="1.0" encoding="utf-8"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=169433
 -->
<configuration>
<system.web>
<machineKey validationKey="E91A16E07A8D628F1F1397962336B0C63B6DC45B8EB3D16BBD5E5761DD8AE462C04C1CC215904FF0353E84EF8194B48682114C72CF8E10F5295E5ADF36DBC520" decryptionKey="EFA118DF00BFB8206F24A1BB4AF7D18FBD6A605B44789E9048D8127FFF950A09" validation="SHA1" decryption="AES" />
<httpRuntime />
<pages enableViewStateMac="true" />

<customErrors mode="Off" />
<compilation targetFramework="4.0" debug="true" />
<authorization>
  <allow users="*" />
  <deny users="?" />
</authorization>
</system.web>
</configuration>

当我回发到另一个页面时会发生这种情况!

2 个答案:

答案 0 :(得分:2)

而不是使用&lt; form action =“...”&gt;要执行跨页回发,请尝试更改提交按钮以阅读&lt; asp:Button runat =“server”postbackurl =“...”&gt;。使用PostBackUrl属性the officially supported way来执行跨页回发,因为它在请求中设置了一个标志,告诉目标页面忽略__VIEWSTATE字段。

答案 1 :(得分:0)

主要问题在于您网站的应用程序池。将您的网站配置为在与您的网站相关的应用程序池的“常规”部分下使用正确的.NET Framework版本(即v4.0)。

在Process Model下,将Identity值设置为Network Service。关闭对话框并右键单击您的网站,然后从内容菜单的Manage Website选项中选择Advanced Settings ....在对话框的“常规”部分下,确保选择了要使用的应用程序池的正确名称。

您的网站现在应该没有任何问题。希望这有助于您克服此错误。