验证视图状态 MAC 失败的解决办法

时间:2024-04-16 18:31:03

 今天给客户维护系统时,在客户端总是显示系统维护的错误页。

是软件出了问题吗?在服务器运行软件,能正常使用。

是服务器出现了问题吗?于是重启了服务器。重启后继续访问,还是系统维护。

到底是什么错误?于是,我关掉了错误页。将<customErrors mode="On" >改成<customErrors mode="off">.

重新编译,在客户端运行,看到了错误原因验证视图状态MAC失败

百度错误,找到了解决方案

在web.config的节点里加入:
<system.web>
    <pages enableEventValidation="false" viewStateEncryptionMode="Never" enableViewStateMac="false/>
</system.web>

=============================================================================

说明:

enableViewState 可选的 Boolean 属性, 默认值为 True。 指定视图状态是否启用并在多个页请求之间保持。

enableViewStateMac 可选的 Boolean 属性, 默认值为 True。 指定从客户端回发页时,ASP.NET 是否应该对页的视图状态运行消息身份验证代码 (MAC)。如果为 True,将检查加密的视图状态,以验证视图状态是否已在客户端被篡改。

viewStateEncryptionMode 可选的 ViewStateEncryptionMode 属性, 默认值为 Auto。此属性是 .NET Framework 2.0 中的新属性。

Always 视图状态始终加密。 Never 视图状态从不加密,即使控件请求加密时也是如此。 Auto 视图状态根据控件的请求而加密。

改完后,重新编译,访问,程序正常运行。

 

原文地址:http://www.cnblogs.com/chillsrc/archive/2009/08/21/1551217.html,如果次种方法行不通,作者还有其他解决方案供参考。