首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >移动浏览器上的无效视图状态网络1.1 -自2014年2月13日起

移动浏览器上的无效视图状态网络1.1 -自2014年2月13日起
EN

Stack Overflow用户
提问于 2014-02-14 18:17:42
回答 2查看 464关注 0票数 2

昨天,我们开始在一个ASP.NET网站(1.1)中出现断断续续的无效视图状态错误,该网站在过去几年一直运行得很好!

代码语言:javascript
复制
System.Web.HttpUnhandledException: Exception of type System.Web.HttpUnhandledException was thrown. ---> System.Web.HttpException: Invalid_Viewstate Client IP: xxx.xxx.xxx.xxx Port: 55415 User-Agent: UCWEB/2.0 (Linux; U; Adr 4.1.2; en-US; ST27i) U2/1.0.0 UCBrowser/8.7.0.315 U2/1.0.0 Mobile ViewState: dDwyMDMzMzIzOTc5O3Q8O2w8aTwz.....

Http-Referer: http://www.mysite.com/default.aspx Path: /default.aspx. ---> System.FormatException: Invalid length for a Base-64 char array. at System.Convert.FromBase64String(String s) at System.Web.UI.LosFormatter.Deserialize(String input) at System.Web.UI.Page.LoadPageStateFromPersistenceMedium() ....

奇怪的是,我们还没有对代码做任何修改,问题只是自己开始的。

执行了所有常见的检查,如machine.config验证键等。

最后,通过关闭ViewStateMac,设法缓解了桌面浏览器的问题:

代码语言:javascript
复制
<pages enableViewStateMac="False" />

现在在日志中,唯一报告错误的浏览器是移动浏览器,尽管我们不能自己用任何桌面或移动浏览器再现错误:

更新

纵观日志,我们现在怀疑导致错误的原因是昨天自动安装的一些Windows更新。

2014年2月13日自动安装的Windows更新:

代码语言:javascript
复制
http://support.microsoft.com/kb/2898860

http://support.microsoft.com/kb/2901115

自从这些更新发布后,还有人在.net 1.1中看到Invalid_Viewstate吗?

目前还没有具体的信息说明这些更新是如何改变的。

EN

回答 2

Stack Overflow用户

发布于 2014-02-26 17:03:40

从不设置EnableViewStateMac=false。

您所看到的错误最有可能的原因是请求正在超时,导致服务器接收到不完整的有效负载。如果您希望处理速度慢的客户端,请尝试将in Web.config (医生在这里)的值计算出来。

票数 2
EN

Stack Overflow用户

发布于 2014-05-29 17:59:47

我们使用的是.NET 4.5,我刚刚在我们的web日志中看到了以下异常。

代码语言:javascript
复制
System.Web.HttpException (0x80004005): The state information is invalid for this page and might be corrupted.
---> System.Web.UI.ViewStateException: Invalid viewstate.
Client IP: [CENSORED]
Port: 52119
Referer: [CENSORED]   Path: [CENSORED] (an ASPX page in our app)
ViewState: [CENSORED]
---> System.FormatException: Invalid length for a Base-64 char array or string.
at System.Convert.FromBase64_Decode(Char* startInputPtr, Int32 inputLength, Byte* startDestPtr, Int32 destLength)
at System.Convert.FromBase64CharPtr(Char* inputPtr, Int32 inputLength)
at System.Convert.FromBase64String(String s)
at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString, Purpose purpose)
at System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter2.Deserialize(String serializedState, Purpose purpose)
at System.Web.UI.ClientScriptManager.EnsureEventValidationFieldLoaded()     --- End of inner exception stack trace ---
at System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError)
at System.Web.UI.ClientScriptManager.EnsureEventValidationFieldLoaded()
at System.Web.UI.ClientScriptManager.ValidateEvent(String uniqueId, String argument)
at System.Web.UI.Control.ValidateEvent(String uniqueID, String eventArgument)
at System.Web.UI.WebControls.HiddenField.LoadPostData(String postDataKey, NameValueCollection postCollection)
at System.Web.UI.WebControls.HiddenField.System.Web.UI.IPostBackDataHandler.LoadPostData(String postDataKey, NameValueCollection postCollection)
at System.Web.UI.Page.ProcessPostData(NameValueCollection postData, Boolean fBeforeLoad)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

用户代理是:

用户-代理: UCWEB/2.0 (MIDP-2.0;U;Adr 2.3.5;en-US;TECNO_P3) U2/1.0.0 UCBrowser/9.1.1.420 U2/1.0.0移动

这不是蜘蛛,因为用户后来向我们报告了这个问题。我安装了最新的安卓和iOS (iPad)版本的浏览器,并使用类似于日志显示给这个用户的工作流测试了我们的页面。结果,这一页似乎工作得很好。因此,我将回到用户,并建议他们可能需要升级他们的UC浏览器的最新版本。

根据浏览器的说法,浏览器试图使用代理和云压缩来提高性能;如果不小心执行,我可以很容易地看到对Viewstate的干扰。我还发现整个浏览器的“气味”有点垃圾邮件,过多的附属/内容链接,评级征集等。我将要求我们的支持团队建议我们的用户尝试一个更主流的浏览器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21786678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档