我们有在 IIS 7.5 上运行的 asp.net (v3.5) 网站,我们的应用程序池在 2.0 中。该站点还位于具有粘性会话的负载平衡服务器场上。平均而言,我们每天会收到大约 200 到 300 个视图状态错误,而回发错误是每天 1,000 到 2,000 个。
具有最多回发错误的页面包含一个 asp 数据列表,其中绑定了许多项目。以及用于过滤和分页的下拉菜单,以及一些回发的 asp 超链接。
对于视图状态,这些页面使用 ajax 选项卡、asp 超链接、模式弹出扩展器和 asp 下拉菜单。
该网站确实获得了大量的流量,并且有许多机器人,如谷歌和 MSN 访问它。
我们尝试了以下方法:
- 在某些控件上禁用视图状态以最小化视图状态大小
- 将视图状态移动到数据库中
- 压缩视图状态
- 将视图状态移动到页面底部
以上都没有帮助我们解决我们的问题。
非常感谢您解决此问题的任何帮助,谢谢。
更新错误信息:
- 视图状态
错误来源:System.Web
错误尝试/捕获:System.Web.UI.ViewStateException:无效的视图状态。客户端 IP :.. . 港口: *** 用户代理:Mozilla/4.0(兼容;Synapse)视图状态:00ytitesern5vnudvqgz rneo/nncjwe2gqvm9hwsejfneaemuijx m43rkjqdgmurhezuvzjtw fcu/cbzrx0xfscog4bv07c1fi7ali/883amvbby5owiliaihufk4fvbn1wgarkbwxmmionsf0jcgw6wlnppj3ww8nmd3 423pu91yexxuyuygxpnu9osgzvxre5wfjlhlhg4ngo1bxdgekgfilzqbxjq58w2aqc7gvdj1ytz4xshkzvjdldiecewgfokt/ot2cpecb bavgiy2f/lvfjg4h9kmuvumsgrbkc6enfnfa0eqce2fi2hj3jo1qqchwsvty8l9uaq6k8oq6ctsggrtyr3xnd 654w6nmldj w8 u vvbaez6hm5zofqxnfrzobik6qbqq5dd7qrozuiu abdvgg xaa5jjm9o5/rroxkrx2fzzhkzjij0xc9p6jenvht 0mplciq4xnewyotosx86axuioyb0yww2phkothy2zok7j2q/ xz4j29zz2drnmqj1km 3j mofii0kk0qe0/s8mkotmhtk4k rfyfja/h7wtebpualg3hg9ydru3yn6pfimay2aasoloydvmj/xfffd tknfqeg7da7/n2flq6hczcolanyjsxf9ofstomby4flhcyuuq/hqg7pc8qvrqy0s/seqyqkr 1ne7bktrazjwlgygpprawneml8f1kbujtbjtz7feieyzu76j1mntagwlrhgchwjmux58cjlu2bbh7ayitfevapzt21pn92du5zcnmiajfxfou1motqkl8hqmlbjj0hxhpi5j5gg5xdxpz5xkqfdflw2wgqfjxilhqm6mwyjsmif6r8wtdjkrsxxmapyeq61lfa18 70sntc2v z3cfy...
错误信息:视图状态 MAC 验证失败。如果此应用程序由 Web Farm 或集群托管,请确保 |machineKey| 配置指定相同的validationKey 和验证算法。AutoGenerate 不能在集群中使用。
HttpErrorCode:500
堆栈跟踪:在 System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) 在 System.Web.UI.Util.DeserializeWithAssert 的 System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) (IStateFormatter 格式化程序,String serializedState)在 System.Web.UI.HiddenFieldPageStatePersister.Load() 在 System.Web.UI.Page.LoadPageStateFromPersistenceMedium() 在 System.Web.UI.Page.LoadAllState() 在 System.Web.UI。 Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 在 System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 在 System.Web.UI.Page.ProcessRequest() 在 System.Web.UI.Page.ProcessRequest( HttpContext 上下文)在 ASP.content_aspx。System.Web.HttpApplication.ExecuteStep 的 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 处的 ProcessRequest(HttpContext 上下文)(IExecutionStep 步骤,布尔值和同步完成)
浏览器:Mozilla/4.0(兼容;Synapse)
- 回发错误来源:System.Web
错误尝试/捕获:System.ArgumentException:回发或回调参数无效。使用 |pages enableEventValidation=|true|/| 启用事件验证 在配置中或 |%@ 页面 EnableEventValidation=|true| %| 在一个页面中。出于安全目的,此功能验证回发或回调事件的参数是否源自 **_sQueEl_clean 最初呈现它们的服务器控件。如果数据有效且符合预期,请使用 ClientScriptManager.RegisterForEventValidation 方法注册回发或回调数据以进行验证。在 System.Web.UI.ClientScriptManager.ValidateEvent(String uniqueId, String argument) 在 System.Web.UI.WebControls.TextBox.LoadPostData(String postDataKey, NameValueCollection postCollection) 在 System.Web.UI.Page.ProcessPostData(NameValueCollection postData,
错误信息:类型异常 |System.Web.HttpUnhandledException| 被抛出。
HttpErrorCode:500
堆栈跟踪:在 System.Web.UI.Page.HandleError(Exception e) 在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 在 System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint ) 在 System.Web.UI.Page.ProcessRequest() 在 System.Web.UI.Page.ProcessRequest(HttpContext context) 在 ASP.category_aspx.ProcessRequest(HttpContext context) 在 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web。 System.Web.HttpApplication.ExecuteStep 处的 HttpApplication.IExecutionStep.Execute()(IExecutionStep 步骤,布尔值&完成同步)
浏览器: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A523 Safari/8536.25