Validation of viewstate MAC failed. 解决方法

前段时间公司为了减轻服务器压力,对网页做了集群,分布在多台服务器,通过DNS轮回解析到各台服务器,结果页面只要打开停留到DNS解析到下一个地址,就会出现出下错误信息。

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.

ExceptionDetails:System.Web.HttpException:ValidationofviewstateMACfailed.IfthisapplicationishostedbyaWebFarmorcluster,ensurethat<machineKey>configurationspecifiesthesamevalidationKeyandvalidationalgorithm.AutoGeneratecannotbeusedinacluster.

SourceError:

Thesourcecodethatgenerated thisunhandledexceptioncanonlybeshownwhencompiledindebugmode. Toenablethis,pleasefollowoneofthebelowsteps,thenrequestthe URL:</p> <p>1.Adda"Debug=true"directiveatthetopofthefilethatgeneratedtheerror.Example:</p> <p><%@PageLanguage="C#"Debug="true"%></p> <p>or:</p> <p>2)Addthefollowingsectiontotheconfigurationfileofyourapplication:</p> <p><configuration></p> <p><system.web></p> <p><compilationdebug="true"/></p> <p></system.web></p> <p></configuration></p> <p>Note thatthissecondtechniquewillcauseallfileswithinagiven applicationtobecompiledindebugmode.Thefirsttechniquewillcause onlythatparticularfiletobecompiledindebugmode.</p> 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.

StackTrace:

<pre>[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</pre>

解决方法:

解决方案(1)

处理页面增加

<%@PageLanguage="C#"enableViewStateMac="false"%>

解决方案(2)推荐

<machineKey validationKey="B8CEF0C74E23E7197FCC4C9E3617C0007D94D43C7F7A79C582C54B95D69B946DFD49CAF5AA72F9A8CA2CBA040A9DF64DC1DF90DAE1214AE4F1AB7FA56DD65C0D" decryptionKey="D7F1CE31847C4FB31EF51E14F3820D52B659AF8523FC932C03506CC075DB8B28" validation="SHA1" decryption="AES" />

http://support.microsoft.com/kb/829743/zh-cn

mac

相关推荐