当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > asp.net 虚拟主机时常出现MAC验证失败错误之解决方法

ASP.NET
使用C# 开发掩码输入文本框
点击DataGrid的列标头在DataGrid最后一行显示该列的和
ASP.NET之Web打印-终极解决篇
SQL Server 2000 Reporting Services: 怎样根据用户的语言偏好显示本地化的信息
利用底层键盘钩子拦载任意按键(回调版)
如何禁止调整自定义控件的尺寸?
用VB6.0编写磁盘格式化程序
Aspx中导Excel
ASP.NET组件设计Step by Step(3)
下面真正开始讲事件的内容
如何有效的使用C#读取文件
如何在C#中加载自己编写的动态链接库(DLL)
Managed DirectX 相关(DirectX.Capture Class Library && DirectShow.NET)
XQuery Reference-from w3schools.com
[译]Visual Basic 2005在语言上的增强(十三)显式的数组范围及小结
lucene的首次应用
[VBA]在后台删除工作表后出现的怪问题
VB.NET 数据库查询 [SQL字符串的生成]
JavaScript调用服务器事件
在Window2003上执行System.Diagnostics.Process.GetProcessesByName等方法失败的原因

ASP.NET 中的 asp.net 虚拟主机时常出现MAC验证失败错误之解决方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-11   浏览: 142 ::
收藏到网摘: n/a

验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。 出现错误:
“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------
验证视图状态 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" />
图片点击可在新窗口打开查看