视图状态错误无效

时间:2009-02-25 22:18:31

标签: viewstate scriptresource.axd

我收到有关ScriptResource.axd的无效viewstate错误。只是想知道你是否有人可以帮助我。错误是:

2009-02-24 09:46:30,021 [13] DEBUG ASP.global_asax [(null)] - Request start - URL: /Web/ScriptResource.axd?d=E9hlvtsn8Gr1MyjysW1gFDFYr4CVwstY-sC22tRu5V8d7UyEYz3FhVYGrlhY87n2ihgKh58RrMRhK-Yk2WcQahEaCg_asTInqHK
2009-02-24 09:46:30,021 [13] DEBUG ASP.global_asax [(null)] - Application_AuthenticateRequest started
2009-02-24 09:46:30,021 [13] ERROR ASP.global_asax [(null)] - Unexpected error.  User presented with Site Error page.
System.Web.HttpException: Invalid viewstate.
   at System.Web.UI.Page.DecryptStringWithIV(String s, IVType ivType)
   at System.Web.UI.Page.DecryptString(String s)
   at System.Web.Handlers.ScriptResourceHandler.DecryptParameter(NameValueCollection queryString)
   at System.Web.Handlers.ScriptResourceHandler.ProcessRequestInternal(HttpResponse response, NameValueCollection queryString, VirtualFileReader fileReader)
   at System.Web.Handlers.ScriptResourceHandler.ProcessRequest(HttpContext context)
   at System.Web.Handlers.ScriptResourceHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext context)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

这种情况发生在生产环境中。我无法在开发和测试环境中重现这一点。这些页面也只能由经过身份验证的用户访问。如果你能对这件事情有所了解,那将是真的。

9 个答案:

答案 0 :(得分:5)

我认为这些错误是由于不同的原因而在不同的浏览器中发生的,这使得追踪变得如此困难。

IE8 Bug

微软已经表示IE8中的一个错误(在某些情况下)会向服务器生成虚假请求,这些错误请求不会影响用户,但会导致在服务器端记录错误。

请在此处查看此讨论:Bug IE8 – 4K dropped - "Invalid viewstate" when loading ScriptResource.axd (编辑:链接现在因某些原因需要登录,抱歉)

...特别是EricLaw-MSFT的更新,他说:

  

值得一提的是,任何在IE6 / IE7或Firefox中遇到问题的人都遇到了与下面描述的IE8问题无关的其他问题。

此博客文章还介绍了错误:Bugs in IE8's Lookahead Downloader

他们说改变设置Content-Type的方式将有助于解决一些错误,尽管不是全部错误 - 他们说这是由他们仍在关注的各种模糊环境引起的。

更新:截至2010年4月1日,这些IE8错误已通过IE8累积更新(KB980182)修复。
这篇文章:IE8 Lookahead Downloader Fixed提供了有关错误和其他可能/部分解决方法(例如this one)的更多详细信息,而不是等待世界上每个人下载修复程序。

其他浏览器

尚未弄清楚,但其他浏览器也会产生这些错误,原因可能是出于不同的原因。

网络农场

此问题不仅限于在网络服务器场上运行的网站,但如果您正在运行服务器场,请查看可能有帮助的this answer by jesal

答案 1 :(得分:2)

如上所述,如果您使用的是Web场且机器密钥不同步,则可能会发生这种情况。

另一种可能性是装配日期是将来的。这导致各种模糊的问题,值得检查。也许您的服务器位于不同的时区?

答案 2 :(得分:1)

我建议查看this ...它基本上概述了根据doctype可能发生这种情况的一些情况。我们有一个类似的问题,似乎只是出现了不规律......对我们来说,这是我们的XHTML doctype和我们在页面上的javascript之间的冲突。我们能够通过确保我们所有的javascript都正确地包装在标签中来解决它。

<script>
     mycode;
</script>

会变成

<script>
// <![CDATA[
    mycode;
// ]]>
</script>

这可能不是一个相同的问题,但是如果您有一个xhtml doctype,请查看您是否有某些非合法XML的未转义字符(例如'&lt;'字符)。

答案 3 :(得分:1)

MS recommends未使用元标记声明您的字符集,而是将其设置为HTTP标头。

删除

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">

并添加

Response.AddHeader("Content-Type", "text/html; charset=utf-8");

答案 4 :(得分:0)

如果接收到scriptresource.axd请求的应用程序池的machineKey与提供原始页面的应用程序池的machineKey不同,则会发生这种情况。如果您使用的是Web场,则最有可能发生这种情况。如果应用程序池重新启动,它也可能发生在单个服务器上,因为将生成新的计算机密钥。解决方案是在web.config中放置一个固定的machineKey。

答案 5 :(得分:0)

我注意到Firefox 3.1 Beta会导致无效的视图状态错误。您可能希望查看日志以查看发生这些错误时正在使用的浏览器。

答案 6 :(得分:0)

这里的错误相同 User-Agent:Mozilla / 4.0(兼容; MSIE 7.0; AOL 9.0; Windows NT 6.0; Trident / 4.0; GTB5; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)

我尝试修改/删除doctype声明,并在//&lt;![CDATA]中扭曲javascript [还有例外......

目前所有来自同一个IP

答案 7 :(得分:0)

我遇到了同样的错误,它们实际上只是在过去一两个月内开始,它发生在我们的几个网站上,自12月以来我们没有改变任何一个。这让我觉得配置更改或Windows更新正在影响它。

答案 8 :(得分:0)

视图状态有多大?某些代理服务器会截断大视图状态。

默认情况下,它很容易滥用viewstate。如果你有一个大的视图状态,那么你可能想要查看在不需要它的控件上禁用视图状态。