【问题标题】:Asp.Net webforms Viewstate validation getting failedAsp.Net webforms Viewstate 验证失败
【发布时间】:2015-12-19 08:59:08
【问题描述】:

我有一个托管在共享服务器上的网站,在 .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

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

【问题讨论】:

    标签: asp.net viewstate state-management


    【解决方案1】:

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

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

    Refrence Link

    【讨论】:

    • 我已经添加了。添加 machinekey 部分后,现在出现的错误是“无法验证数据”。
    猜你喜欢
    • 1970-01-01
    • 2010-11-27
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多