asp.net 虚拟主机时常出现MAC验证失败错误之解决方法
作者:
“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------
验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Web.HttpException: 验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。
源错误:
只有在调试模式下进行编译时,生成此未处理异常的源代码才会显示出来。若要启用此功能,请执行以下步骤之一,然后请求 URL:
1. 在产生错误的文件的顶部添加一条“Debug=true”指令。例如:
<%@ Page Language="C#" Debug="true" %>
或:
2. 将以下的节添加到应用程序的配置文件中:
<configuration>
<system.web>
<compilation debug="true"/>
</system.web>
</configuration>
请注意,第二个步骤将使给定应用程序中的所有文件在调试模式下进行编译;第一个步骤仅使该特定文件在调试模式下进行编译。
重要事项: 以调试模式运行应用程序一定会产生内存/性能系统开销。在部署到生产方案之前,应确保应用程序调试已禁用。
解决方法:因为.NET在对客户端数据与服务器间传送过程中,需要对数据进行加密与解密,而加密与解密算法可以在web.config里进行配置,在web.config中,validationKey和decryptionKey的默认值是AutoGenerate,由系统随机生成密钥,如果在本地或者使用的是独立主机通常不会有什么问题,但是使用虚拟主机,一台服务器上有多个虚拟主机存在时就会出现以上问题,MSDN中也特别指出不能在群集中使用 AutoGenerate应该指定固定的密钥值,这就需要在web.config中添加关于machineKey的配置项,并手动设置其中的密钥值,这里请注意,不同加密算法对于密钥的最大字符长度是不同的,在这里能够使用的有AES,DES,3DES,SHA1,MD5,我只知道DES的密钥字符长度为16,3DES长度为48,手动设置时密钥长度必须等于其最大长度,否则会出错!至于密钥的16进制值可以随便输入。
具体操作方法如下:
找到网站运行根目录下的web.config文件,如下图加亮行所示加上相应的项。设置时,请自行修改KEY值,这关系到服务器的加密安全。图片看不清晰请点击图片查看。
代码:<machineKey validation="SHA1" validationKey="78EA3850338FBADCE59D8DDF58C9E4518E7510149C46142D7AAD7F1AD49D95D4" decryptionKey="5FC88DFC24AE12BC" />
您可能感兴趣的文章:
- ASP.NET 运行时错误: 没有为扩展名“.asax”注册的生成提供程序修正版
- 运行asp.net时出现 http错误404-文件或目录未找到
- asp.net 继承自Page实现统一页面验证与错误处理
- asp.net 从客户端中检测到有潜在危险的 Request.Form 值错误解
- asp.net 编译器错误信息: CS0006: 未能找到元数据文件 该死的.NET
- Asp.Net 程序错误Runtime Error原因与解决
- asp.net网站的404错误页面的正确设置方法
- asp.net运行提示未将对象引用设置到对象的实例错误解决方法
- IIS部署asp.net报404错误的解决方法
- asp.net无法加载oci.dll等错误的解决方法
- asp.net错误捕获(错误处理)page_error事件使用方法
- asp.net iis7默认文档错误异常的解决方法
- ASP.Net中命名空间Namespace浅析和使用例子
- ASP.NET中MVC使用AJAX调用JsonResult方法并返回自定义错误信息
- asp.net操作过程中常见错误的解决方法
- asp.net中“从客户端中检测到有潜在危险的Request.Form值”错误的解决办法
- ASP.NET MVC命名空间时引起错误的解决方法