ASP.NET / FireFox - 此页面的状态信息无效,可能已损坏

时间:2011-07-05 23:18:07

标签: asp.net firefox viewstate

我花了大约两天时间研究这个问题,似乎无法找到解决方案,或者所提供的解决方案似乎没有完全解决我遇到的问题。

  • 我有一个ASP.NET应用程序,.NET 4.0
  • 间歇性地,我们会收到有关View State corruption
  • 的错误
  • 这似乎只适用于基于Mozilla的浏览器(不是100%肯定,试图获取更多错误日志以确认)
  • 似乎从没有一致的可重复生产行动开始。
  • 与MAC不同步无关,我们明确设置了机器密钥/验证密钥而未设置为自动生成
  • 它只发生在我们的生产环境中,从未发生过DEV / QAT / UAT
  • 它发生在具有更新面板的页面上 - 而某些页面确实具有非常大的视图状态,其中一些页面具有非常小的视图状态
  • 似乎不可重复生产。我找到的一些解决方案与“点击页面,点击进入另一个页面的按钮,在浏览器中单击返回并发生错误”有关 - 这不是那种情况。
  • Windows Enterprise 2008上的IIS7,16GB内存,已启用PAE。
  • 这些页面可以正常运行一段时间,然后停止工作 - 重新启动IIS会暂时解决此问题。
  • 这不在Web场上运行 异常/堆栈跟踪:

说明

Error occurred System.Web.HttpException (0x80004005): The state information is invalid for this page and might be corrupted. ---> System.Web.UI.ViewStateException: Invalid viewstate.

Client IP: <removed>

Port: 21884

Referer: <removed>

Path: /PathToPage/Page.aspx

User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; MS-RTC LM 8)

ViewState: /wEPDwULLTEyNTU4MDc4NT....<removed by user>... ---> System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.

at System.Convert.FromBase64String(String s)

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()

--- End of inner exception stack trace ---

at System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError)

at System.Web.UI.ViewStateException.ThrowViewStateError(Exception inner, String persistedState)

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)

1 个答案:

答案 0 :(得分:0)

因为此问题仅在更新面板页面上发生,所以我怀疑在更新面板打破viewstate之后出现错误,并且您很简单没有捕获并且您看不到此错误。

要找到它们,临时解决方案是删除更新面板以查看是否有任何错误。

第二种解决方案是在较小的部分压缩和剪切视图状态,以防中间的某个代理或路由器中断它。

还有一些内容可以阅读:ASP.Net Post timeoutCryptographicException: Padding is invalid and cannot be removed and Validation of viewstate MAC failed