1

我有一个托管在共享服务器上的网站,在 .Net 版本上运行:4.0.30319.34280

我最初收到以下错误

视图状态 MAC 验证失败。如果此应用程序由 Web Farm 或集群托管,请确保配置指定相同的 validationKey 和验证算法。AutoGenerate 不能在集群中使用。

为了修复它,我在我的 web.config 中添加了一个部分,按照以下提到的步骤操作:https: //support.microsoft.com/en-us/kb/312906

现在我收到以下错误

无法验证数据。

堆栈跟踪:

[HttpException (0x80004005): Unable to validate data.]
   System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt, Byte[] buf, Byte[] modifier, Int32 start, Int32 length, Boolean useValidationSymAlgo, Boolean useLegacyMode, IVType ivType, Boolean signData) +1072
   System.Web.UI.Page.EncryptString(String s, Purpose purpose) +150
   System.Web.Handlers.AssemblyResourceLoader.FormatWebResourceUrl(String assemblyName, String resourceName, Int64 assemblyDate, Boolean htmlEncoded) +52
   System.Web.Handlers.AssemblyResourceLoader.GetWebResourceUrlInternal(Assembly assembly, String resourceName, Boolean htmlEncoded, Boolean forSubstitution, IScriptManager scriptManager, Boolean enableCdn) +662
   System.Web.Handlers.AssemblyResourceLoader.GetWebResourceUrl(Type type, String resourceName, Boolean htmlEncoded, IScriptManager scriptManager, Boolean enableCdn) +188
   System.Web.UI.ClientScriptManager.GetWebResourceUrl(Page owner, Type type, String resourceName, Boolean htmlEncoded, IScriptManager scriptManager, Boolean enableCdn) +99
   System.Web.UI.ClientScriptManager.RegisterClientScriptResource(Type type, String resourceName) +96
   System.Web.UI.WebControls.BaseValidator.RegisterValidatorCommonScript() +212
   System.Web.UI.WebControls.BaseValidator.OnPreRender(EventArgs e) +85
   System.Web.UI.Control.PreRenderRecursiveInternal() +88
   System.Web.UI.Control.PreRenderRecursiveInternal() +160
   System.Web.UI.Control.PreRenderRecursiveInternal() +160
   System.Web.UI.Control.PreRenderRecursiveInternal() +160
   System.Web.UI.Control.PreRenderRecursiveInternal() +160
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +883

任何解决问题的帮助将不胜感激。

4

1 回答 1

0

可能是 IIS 回收了您的应用程序,因此您获得了会话/视图状态的新密钥。为了缓解这种情况,请在 web.config 中添加机器静态密钥。

<machineKey
validationKey="56AB7132992003EE87F74AE4D9675D65EED8018D3528C0B8874905B51940DEAF6B85F1D922D19AB8F69781B2326A2F978A064708822FD8C54ED74CADF8592E17"
decryptionKey="A69D80B92A16DFE1698DFE86D4CED630FA56D7C1661C8D05744449889B88E8DC"
validation="SHA1" decryption="AES" />

参考链接

于 2015-12-19T09:22:36.637 回答