在开发环境下可正常运行,但发布后,总是出现如下报错.
验证视图状态 MAC 失败。如果此应用程序由网络场或群集托管,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。
请参阅 http://go.microsoft.com/fwlink/?LinkID=314055 获取详细信息。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Web.HttpException: 验证视图状态 MAC 失败。如果此应用程序由网络场或群集托管,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。
解决办法:
在web.config中加入
<machineKey validationKey="3FF1E929BC0534950B0920A7B59FA698BD02DFE8" decryptionKey="280450BB36319B474C996B506A95AEDF9B51211B1D2B7A77" decryption="3DES" validation="SHA1"/>
所有都可以正常运行了.
页面中加入 EnableViewStateMac="false" 基本都是无效,有时正常,有时报错,在web.config中加入设置,目前可正常运行.
<?xml version="1.0" encoding="utf-8"?>
<!--
有关如何配置 ASP.NET 应用程序的详细信息,请访问
https://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.6.1"/>
<httpRuntime targetFramework="4.6.1"/>
<!--支持Start Web Service-->
<webServices>
<protocols>
<add name="HttpSoap"/>
<add name="HttpPost"/>
<add name="HttpGet"/>
<add name="Documentation"/>
</protocols>
</webServices>
<!--支持End Web Service-->
<customErrors mode="Off" />
<pages controlRenderingCompatibilityVersion="4.0"/>
<machineKey validationKey="3FF1E929BC0534950B0920A7B59FA698BD02DFE8" decryptionKey="280450BB36319B474C996B506A95AEDF9B51211B1D2B7A77" decryption="3DES" validation="SHA1"/>
</system.web>
<system.codedom>
</system.codedom>
</configuration>
博客讲述了作者遇到的一个问题:在.NET应用发布后,出现验证视图状态MAC失败的错误。该错误在开发环境中并未发生。经过研究,作者发现解决方案是在web.config文件中添加指定的<machineKey>配置,以确保validationKey和decryptionKey相同,并设置了decryption和validation算法。通过这种方式,应用已能正常运行。
1万+

被折叠的 条评论
为什么被折叠?



