asp.net

Validation of viewstate MAC failed

2011-02-28

Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Web.HttpException: Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.

Source Error:

The source code that generated this unhandled exception can only be shown when compiled in debug mode. To enable this, please follow one of the below steps, then request the URL:

1. Add a "Debug=true" directive at the top of the file that generated the error. Example:

  <%@ Page Language="C#" Debug="true" %>

or:

2) Add the following section to the configuration file of your application:

<configuration>
   <system.web>
       <compilation debug="true"/>
   </system.web>
</configuration>

Note that this second technique will cause all files within a given application to be compiled in debug mode. The first technique will cause only that particular file to be compiled in debug mode.

Important: Running applications in debug mode does incur a memory/performance overhead. You should make sure that an application has debugging disabled before deploying into production scenario.


Stack Trace:

[HttpException (0x80004005): Unable to validate data.]

   System.Web.Configuration.MachineKeySection.GetDecodedData(Byte[] buf, Byte[] modifier, Int32 start, Int32 length, Int32& dataLength) +294

   System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) +203

 

[ViewStateException: Invalid viewstate.

        Client IP: 218.28.26.86

        Port: 45262

        User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; FDM)

        ViewState: /wEPDwUKLTQzMDM1NDM2MA9kFgRmDxYCHgRUZXh0BdEbdmFyIHNBcnIgPSBuZXcgQXJyYXkoKTtzQXJyWzE1XT1uZXcgQXJyYXkoKTtzQXJyWzE1XVswXT0xO3NBcnJbMTVdWzFdPWZhbHNlO3NBcnJbMTVdWzNdPTA7c0FyclsxNV1bMl09dHJ1ZTtzQXJyWzM4XT1uZXcgQXJyYXkoKTtzQXJyWzM4XVswXT0wO3NBcnJbMzhdWzFdPXRydWU7c0FyclszOF1bM109MTtzQXJyWzM4XVsyXT10cnVlO3NBcnJbN109bmV3IEFycmF5KCk7c0Fycls3XVswXT0yO3NBcnJbN11bMV09ZmFsc2U7c0Fycls3XVszXT0wO3NBcnJbN11bMl09dHJ1ZTtzQXJyWzZdPW5ldyBBcnJheSgpO3NBcnJbNl1bMF09MDtzQXJyWzZdWzFdPWZhbHNlO3NBcnJbNl1bM109MTtzQXJyWzZdWzJdPXRydWU7c0FyclszN109bmV3IEFycmF5KCk7c0FyclszN11bMF09MDtzQXJyWzM3XVsxXT10cnVlO3NBcnJbMzddWzNdPTE7c0FyclszN11bMl09dHJ1ZTtzQXJyWzEzXT1uZXcgQXJyYXkoKTtzQXJyWzEzXVswXT00O3NBcnJbMTNdWzFdPWZhbHNlO3NBcnJbMTNdWzNdPTA7c0FyclsxM11bMl09dHJ1ZTtzQXJyWzMzXT1uZXcgQXJyYXkoKTtzQXJyWzMzXVswXT0wO3NBcnJbMzNdWzFdPWZhbHNlO3NBcnJbMzNdWzNdPTE7c0FyclszM11bMl09dHJ1ZTtzQXJyWzM0XT1uZXcgQXJyYXkoKTtz...]

 

[HttpException (0x80004005): Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.]

   System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) +267

   System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) +282

   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() +198

   System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +83

   System.Web.UI.Page.LoadAllState() +35

   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +7350

   System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +213

   System.Web.UI.Page.ProcessRequest() +86

   System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) +18

   System.Web.UI.Page.ProcessRequest(HttpContext context) +49

   ASP.admin_articleadd_aspx.ProcessRequest(HttpContext context) +4

   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +358

   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +64

以上是错误代码。请木鸟一定帮忙啊,这个问题让人很头大。

 

 

这个问题并不是每次都出现,只在后台向数据库写入东西的时候比如添加文章时会出现,而且是当添加的内容稍多时比如两项以上时出现机率较高。
另外后台系统设置里整合接口安全验证码是干什么用的。

 

 

 

我也出现这个问题,终于解决了

把文件web.config里面的
  <pages validateRequest="false" enableSessionState="true" enableViewState="true"/>
改成
  <pages validateRequest="false" enableSessionState="true" enableViewStateMac="false" enableViewState="true"/>

一切ok

来源于:http://www.iwms.net/td7397.aspx