2

我得到这个异常帮助我如何解决这个问题。

Error Time      : 20091104 151412
Error Message   : 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          : System.Web
StackTrace      : at System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError)
   at System.Web.UI.ViewStateException.ThrowMacValidationError(Exception inner, String persistedState)
   at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString)
   at System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState)
   at System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState)
   at System.Web.UI.HiddenFieldPageStatePersister.Load()
   at System.Web.UI.Page.LoadPageStateFromPersistenceMedium()
   at System.Web.UI.Page.LoadAllState()
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest()
   at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
   at System.Web.UI.Page.ProcessRequest(HttpContext context)
   at ASP.bla_bls_aspx.ProcessRequest(HttpContext context) in c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\87932190\f6393965\App_Web_slwxkxn3.2.cs:line 0
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Target Site     : Void ThrowError(System.Exception, System.String, System.String, Boolean)
Inner Exception : System.Web.UI.ViewStateException: Invalid viewstate. 
    Client IP: 172.16.153.71
    Port: 1466
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 2.0.50727)
    ViewState: /wEPDwUKLTg3MDIzOTc1Ng9kFgICAw9kFgICAw9kFgJmD2QWBgIdD2QWAgIBDzwrAA0BAA8WBB4LXyFEYXRhQm91bmRnHgtfIUl0ZW1Db3VudAIUZBYCZg9kFioCAQ9kFhpmDw8WAh4EVGV4dAUDODU4ZGQCAQ8PFgIfAgUKMSAgICAgICAgIGRkAgIPDxYCHwIFDE5ZS1UgNjEwOTc1MGRkAgMPDxYCHwIFAzQwJ2RkAgQPDxYCHwIFA05ZS2RkAgUPDxYCHwIFClgtUHJlc3MgMjFkZAIGDw8WAh8CBRQzMCBPY3QgMjAwOSAwNDowMDowMGRkAgcPDxYCHwIFB1RFTEZPUkRkZAIIDw8WAh8CBQJJS2RkAgkPDxYCHwIFAkZHZGQCCg8PFgQeCUJhY2tDb2xvcgqmAR4EXyFTQgIIZBYCAgEPDxYCHwIFCkluIFByb2Nlc3NkZAILDw8WBB8DCqcBHwQCCGQWAgIBDw8WAh8CBRQwNCBOb3YgMjAwOSAxMTowMDowMGRkAgwPZBYCAgEPDxYCHwIFBkV4ZmFjdGRkAgIPZBYaZg8PFgIfAgUDODU1ZGQCAQ8PFgIfAgUKMiAgICAgICAgIGRkAgIPDxYCHwIFDE5ZS1UgODQ0Mzc0NWRkAgMPDxYCHwIFAzQwJ2RkAgQPDxYCHwIFA05ZS2RkAgUPDxYCHwIFClgtUHJlc3MgMjFkZAIGDw8WAh8CBRQyOSBPY3QgMjAwOSAwMzozMDowMGRkAgcPDxYCHwIFB1RFTEZPUkRkZAIIDw8WAh8CBQJJS2RkAgkPDxYCHwIFAkZHZGQCCg8PFgQfAwqmAR8EAghkFgICAQ8PFgIfAgUKSW4gUHJvY2Vzc2RkAgsPDx... ---> System.Web.HttpException: Unable to validate data.
   at System.Web.Configuration.MachineKeySection.GetDecodedData(Byte[] buf, Byte[] modifier, Int32 start, Int32 length, Int32& dataLength)
   at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString)
   --- End of inner exception stack trace ---
4

3 回答 3

4

如果您的服务器作为集群的一部分运行(即对您的应用程序的请求在多个服务器之间平衡),您必须确保您的机器都配置为使用相同的机器密钥。

发生回发时,ASP.NET 会验证 ViewState 数据。此验证使用私钥(机器密钥)来保证数据的完整性。如果您没有明确指定此密钥,则会为您生成它。不同的机器会生成不同的密钥,因此负载均衡的请求可能会验证失败,因为它们根据页面的首次提供位置和回发的发回位置对不同的密钥进行验证。

本文将向您详细介绍机器密钥的用途以及如何配置您的服务器。

于 2009-11-04T09:44:00.537 回答
2

您需要在所有服务器上的 web.config 中拥有相同的验证密钥。

您可以在此站点的帮助下生成密钥

于 2009-11-04T09:18:30.137 回答
0

请同时检查您的 IIS。在连接部分,显示应用程序池列表中,选择预期的池并转到“回收...”工具菜单。确保分配了足够的内存。要查看这一点,请在安装 IIS 的计算机上的任务管理器中观察 w3wp.exe 进程使用的内存量。正确设置回收管理器属性。我放弃了“虚拟内存使用”复选框,并更愿意为回收池应用程序计划指定的时间。

于 2013-06-13T11:54:31.393 回答