18

我收到关于 ScriptResource.axd 的无效视图状态错误。只是想知道你们中是否有人可以帮助我。错误是:

2009-02-24 09:46:30,021 [13] DEBUG ASP.global_asax [(null)] - 请求开始 - URL: /Web/ScriptResource.axd?d=E9hlvtsn8Gr1MyjysW1gFDFYr4CVwstY-sC22tRu5V8d7UyEYz3FhVYGrlhY87n2ihgInKhcQahErqMRQG_Tru5V8d7UyEYz3FhVYGrlhY87n2ihgInKhcQahErqMRG_G_ThKhcHKahErqC
2009-02-24 09:46:30,021 [13] 调试 ASP.global_asax [(null)] - Application_AuthenticateRequest 开始
2009-02-24 09:46:30,021 [13] 错误 ASP.global_asax [(null)] - 意外错误。用户显示站点错误页面。
System.Web.HttpException:无效的视图状态。
   在 System.Web.UI.Page.DecryptStringWithIV(String s, IVType ivType)
   在 System.Web.UI.Page.DecryptString(String s)
   在 System.Web.Handlers.ScriptResourceHandler.DecryptParameter(NameValueCollection 查询字符串)
   在 System.Web.Handlers.ScriptResourceHandler.ProcessRequestInternal(HttpResponse 响应,NameValueCollection 查询字符串,VirtualFileReader fileReader)
   在 System.Web.Handlers.ScriptResourceHandler.ProcessRequest(HttpContext 上下文)
   在 System.Web.Handlers.ScriptResourceHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext 上下文)
   在 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   在 System.Web.HttpApplication.ExecuteStep(IExecutionStep 步骤,Boolean& completedSynchronously)

这发生在生产环境中。我无法在开发或测试环境中重现这一点。此外,这些页面只能由经过身份验证的用户访问。如果你能对这件事有所了解,那就太好了。

4

9 回答 9

5

我认为这些错误在不同的浏览器上发生的原因不同,这就是很难追踪的原因。

IE8 错误

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

请参阅此处的讨论:Bug IE8 – 4K dropped - “Invalid viewstate” when loading ScriptResource.axd (编辑:链接现在出于某种原因需要登录,抱歉)

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

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

这篇博文还描述了这些错误:IE8's Lookahead Downloader 中的错误

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

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

其它浏览器

还没弄明白,但其他浏览器也会产生这些错误,大概是出于不同的原因。

网络农场

此问题不仅限于在网络场上运行的站点,但如果您正在运行一个场,请查看jesal 的这个答案,这可能会有所帮助

于 2009-11-04T14:00:33.573 回答
2

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

另一种可能性是组装日期在将来。这会导致各种晦涩难懂的问题,值得一试。也许您的服务器位于不同的时区?

于 2009-02-25T22:36:54.247 回答
1

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

所以删除

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

并添加

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

于 2009-10-09T15:06:47.347 回答
1

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

<script>
     mycode;
</script>

会成为

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

这可能不是一个相同的问题,但如果您有一个 xhtml 文档类型,请查看您是否有非合法 XML 的未转义字符(例如“<”字符)。

于 2009-02-25T22:30:33.403 回答
0

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

于 2009-02-27T23:50:49.683 回答
0

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

于 2009-07-14T15:12:41.360 回答
0

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

于 2009-02-25T22:31:49.377 回答
0

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

很容易滥用视图状态,因为它默认是打开的。如果您确实有一个大的视图状态,那么您可能想要查看在不需要它的控件上禁用视图状态。

于 2009-08-06T20:43:08.017 回答
0

用户代理的相同错误: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 声明并在 // <![CDATA[ 中扭曲 javascript 并且仍然存在异常......

目前所有都来自同一个IP

于 2009-06-23T12:53:59.717 回答