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>

请注意,第二个步骤将使给定应用程序中的所有文件在调试模式下进行编译;第一个步骤仅使该特定文件在调试模式下进行编译。

重要事项: 以调试模式运行应用程序一定会产生内存/性能系统开销。在部署到生产方案之前,应确保应用程序调试已禁用。

堆栈跟踪:

[HttpException (0x80004005): 无法验证数据。]
System.Web.Configuration.MachineKeySection.GetDecodedData(Byte[] buf, Byte[] modifier, Int32 start, Int32 length, Int32& dataLength) +2546764
System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) +214

[ViewStateException: 无效的视图状态。
Client IP: 127.0.0.1
Port: 1678
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
ViewState: +DHKNyze8Q6fZlW8T3kqrOkcvI1Y6qlhKi0bcpHnBmZdO7ftgMjL4U8x0qsEdbVEp1FmjzezRsCnvvvwXObQqhrwVRRTCc1IAwzNbZeKE3qjqSDfHk3HmK6xBgHm1sTsmWj/0KFgL6qwstm3dOjvGIHahto1iI3T4lH6YU+tjyEms7Fxdv8JZgkux2ghCHWGOmfTVM7C+audblvkaTrfRRlruUsmC1EApq0uAn72UsyW5k9ZdRESK8oZXJsF0149LXunb4FC/bQ96YxtVGE9sQEpZC6mVWBN6/1yK6cuI/sKaNz+ObMvILwEO4uCEKIY4eIRfcIYSG5x9gPTczsWGCfpr7vUTo8FSsXcA/hFkazRtI2MUiCRXo05ISKKhgxpRSYcm50cvpOKryPsre0hxe6Nr5fT17LFm0Y7BmZbh4zEM925/LBwgXRb8aOIMJxkTxIFk787JPF/JBMYZzmoXLacAko5/pUv/M6Cliy3vE4ex0PK5avyPbepMllTtOvfYvmiYCARrElK2zNV3836FEY9k+9898tBijFDCjpDZvXAxNsWFcdYFpUAS+w5elGBmtSIqVJlz7aQikjR9LePHmvKwTCsUjRAGjhFqu+3wa8nj64ySYTL1LYK+YL+dDaQlPF9MT1FQjHnnmHuLdtRIfnZXbv3O0l4biN5eY4Rmovq9ATRjxYcfRN0yw8sf1Gpm29IGO4VZCyJ0xWd4SyOoYrKcq4AVIRK21drbjRQuEKp9BwAgka8xTltFtLTCCKoUZmMbdvxfS233lrEdEGQBg7Dyczt1McCmxkHyI7FOPWIKB16ZCJIG7fVxW3pOFAwL4u8g271kC2o+xERTXCZFjBX9bkwD9...]

[HttpException (0x80004005): 验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。]
System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) +116
System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) +251
System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState) +4
System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState) +37
System.Web.UI.HiddenFieldPageStatePersister.Load() +220
System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +83
System.Web.UI.Page.LoadAllState() +35
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +6953
System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +154
System.Web.UI.Page.ProcessRequest() +86
System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) +18
System.Web.UI.Page.ProcessRequest(HttpContext context) +49
ASP.offer_aspx.ProcessRequest(HttpContext context) +29
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +154
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +64


版本信息: Microsoft .NET Framework 版本:2.0.50727.42; ASP.NET 版本:2.0.50727.42

.net文件上传代码实例

<%@ Import Namespace=”System.IO” %>
<%@ page Language=”C#” debug=”true” %>
<html>
<head>
<title>上传文件 , http://www.chinabs.net </title>
<script language=”C#” runat=”server”>
 //This method is called when the “upload” button id pressed
 public void UploadFile(object sender , EventArgs E)
 {
   //检查上传文件不为空
   if(myFile.PostedFile!=null)
   {     
  string nam = myFile.PostedFile.FileName ;
  //取得文件名(抱括路径)里最后一个”.”的索引
  int i= nam.LastIndexOf(“.”);
  //取得文件扩展名
  string newext =nam.Substring(i);
  //这里我自动根据日期和文件大小不同为文件命名,确保文件名不重复
  DateTime now = DateTime.Now; 
  string newname=now.DayOfYear.ToString()+myFile.PostedFile.ContentLength.ToString(); 
  //保存文件到你所要的目录,这里是IIS根目录下的upload目录.你可以改变.
  //注意: 我这里用Server.MapPath()取当前文件的绝对目录.在asp.net里”\”必须用”\\”代替
  myFile.PostedFile.SaveAs(Server.MapPath(“\\upload\\”+newname+newext)); 
  //得到这个文件的相关属性:文件名,文件类型,文件大小
  fname.Text=myFile.PostedFile.FileName;
  fenc.Text=myFile.PostedFile.ContentType ;
  fsize.Text=myFile.PostedFile.ContentLength.ToString();
   }
 }
</script>
</head>
<body>
<center>
<h3> 文件上传的实例, 来自<a href=”http://www.chinabs.net”>中国BS网</a></h3>
<form id=”uploderform” method=”post” action=”FileUpload.aspx” enctype=”multipart/form-data”  runat=”server” >
<table border=”1″ cellspacing=”2″ cellpadding=”2″ >
<tr> <td><h5>选择要上传的文件:</h5></td</tr>
<tr>
<td>
<input type=”file” id=”myFile” runat=”server” NAME=”myFile”>
</td>
</tr>
<tr><td>
<input type=”button”  value=”上 传” OnServerClick=”UploadFile” runat=”server” ID=”Button1″ NAME=”Button1″>
</td></tr>
</table>
</form>
<br>
<br>
<table border=”1″ cellspacing=”2″>
<tr><td><b>文件资料</b></td>
<td>&nbsp;</td> 
</tr>
<tr>
<td>文件名 :</td>
<td><asp:label id=”fname” text=”” runat=”server” /></td></tr>
<tr>
<td>文件类型 :</td>
<td><asp:label id=”fenc” runat=”server” /></td></tr>
<tr>
<td>文件大小 :(in bytes)</td>
<td><asp:label id=”fsize” runat=”server” /></td></tr>
</table>
<br>
<br>
<br>
</center>
</body>
</html>

服务器应用程序不可用

服务器应用程序不可用
您试图在此 Web 服务器上访问的 Web 应用程序当前不可用。请点击 Web 浏览器中的“刷新”按钮重试您的请求。

管理员注意事项: 详述此特定请求失败原因的错误信息可在 Web 服务器的系统事件日志中找到。请检查此日志项以查明导致该错误发生的原因。

——————————————————————————————————————————————

此问题因1.1与2.0版的.net程序共用一个应用程序池造成。将不同版本的应用程序从应用程序池独立出来即可。

访问 IIS 元数据库失败

访问 IIS 元数据库失败。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Web.Hosting.HostingEnvironmentException: 访问 IIS 元数据库失败。

用于运行 ASP.NET 的进程帐户必须具有对 IIS 元数据库(如
IIS://servername/W3SVC)的读访问权。有关如何修改元数据库权限的信息,请参见
http://support.microsoft.com/?kbid=267904

源错误:

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。 

堆栈跟踪:

[HostingEnvironmentException: 访问 IIS 元数据库失败。]
   System.Web.Configuration.MetabaseServerConfig.MapPathCaching(String
siteID, VirtualPath path) +690
  
System.Web.Configuration.MetabaseServerConfig.System.Web.Configuration.IConfigMapPath.MapPath(String siteID, VirtualPath vpath) +9
   System.Web.Hosting.HostingEnvironment.MapPathActual(VirtualPath
virtualPath, Boolean permitNull) +174
   System.Web.CachedPathData.GetConfigPathData(String configPath) +398
   System.Web.CachedPathData.GetConfigPathData(String configPath) +263
   System.Web.CachedPathData.GetVirtualPathData(VirtualPath virtualPath,
Boolean permitPathsOutsideApp) +166
   System.Web.Configuration.RuntimeConfig.GetLKGRuntimeConfig(VirtualPath
path) +187

——————————————————————————–
版本信息: Microsoft .NET Framework 版本:2.0.50727.42; ASP.NET 版本:2.0.50727.42

解决方案:

在运行中输入cmd,然后在MSDOS环境下输入:

cd   C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727,回车

然后输入aspnet_regiis /r ,回车,问题解决。

回家

回家,这个暑假我第二次回家,当然,还需要在武汉继续待上几天,我没有足够多的时间花在家里。

      唯一没见的就是妹妹,半年没见了,如果我这次不回去,就将是整整一年。自己忙的时候不会想这些,但心里还是惦记着,她好像不知道还有个校内网,一直没有见她。想一想妹妹也将要读大二了,不知道她在学校是怎么个样子。给过她一个傻瓜相机,但好像还没看到照片。

      17号回家,18号看看能不能安排,19号去参加小姑家表姐的婚礼,20号返校。