无效的回发或回调参数/无效的视图状态

时间:2013-03-13 13:57:46

标签: c# asp.net iis-7.5

我们在IIS 7.5上运行asp.net(v3.5)网站我们的应用程序池是2.0。该站点也位于具有粘性会话的负载平衡服务器场上。 平均而言,我们每天会得到大约200到300个视图状态错误,并且回发错误每天为1,000到2,000。

回发错误最多的页面包含一个asp数据列表,其中绑定了许多项目。以及过滤和分页的下拉列表,以及回发的一些asp超链接。

对于viewstate,这些页面使用ajax选项卡,asp超链接,模式弹出扩展器和asp下拉。

该网站确实获得了大量流量,并且有很多机器人,例如谷歌和MSN。它就是这样。

我们尝试过以下方法:

  • 在某些控件上禁用viewstate以最小化viewstate大小
  • 将viewstate移动到数据库中
  • 压缩视图状态
  • 将视图状态移至页面底部

以上都没有帮助我们解决问题。

非常感谢您解决此问题的任何帮助。谢谢。

更新了错误信息:

  • 视图状态

错误来源:System.Web

错误尝试/捕获:System.Web.UI.ViewStateException:无效的视图状态。客户端IP: 端口:* **用户代理:Mozilla的/ 4.0(兼容;突触)的ViewState:00ytitesern5vnudvqgz rneo / nncjwe2gqvm9hwsejfneaemuijx m43rkjqdgmurhezuvzjtw FCU / cbzrx0xfscog4bv07c1fi7ali / 883amvbby5owiliaihufk4fvbn1wgarkbwxmmionsf0jcgw6wlnppj3ww8nmd3 423pu91yexxuyuygxpnu9osgzvxre5wfjlhlhg4ngo1bxdgekgfilzqbxjq58w2aqc7gvdj1ytz4xshkzvjdldiecewgfokt / ot2cpecb bavgiy2f / lvfjg4h9kmuvumsgrbkc6enfnfa0eqce2fi2hj3jo1qqchwsvty8l9uaq6k8oq6ctsggrtyr3xnd 654w6nmldj W8ùvvbaez6hm5zofqxnfrzobik6qbqq5dd7qrozuiu abdvgg xaa5jjm9o5 / rroxkrx2fzzhkzjij0xc9p6jenvht 0mplciq4xnewyotosx86axuioyb0yww2phkothy2zok7j2q / xz4j29zz2drnmqj1km 3J mofii0kk0qe0 / s8mkotmhtk4k rfyfja / h7wtebpualg3hg9ydru3yn6pfimay2aasoloydvmj / xfffd tknfqeg7da7 / n2flq6hczcolanyjsxf9ofstomby4flhcyuuq / hqg7pc8qvrqy0s / seqyqkr 1ne7bktrazjwlgygpprawneml8f1kbujtbjtz7feieyzu76j1mnt agwlrhgchwjmux58cjlu2bbh7ayitfevapzt21pn92du5zcnmiajfxfou1motqkl8hqmlbjj0hxhpi5j5gg5xdxpz5xkqfdflw2 wgqvfjxilhqm6mwyjsmif6r8wtdjkrsxxmapyeq61lfa8 7zntc2v3v8rup1kgm0ssp7bb zgcfy ...

错误信息:viewstate MAC验证失败。如果此应用程序由Web场或群集托管,请确保| machineKey | configuration指定相同的validationKey和验证算法。无法在群集中使用AutoGenerate。

HttpErrorCode:500

堆栈跟踪:位于System.Web.UI的System.Web.UI.ObjectStateFormatter.Deserialize(String inputString)的System.Web.UI.ViewStateException.ThrowError(Exception inner,String persistedState,String errorPageMes​​sage,Boolean macValidationError)。 System.Web上的System.Web.UI.Page.LoadAllState()处的System.Web.UI.Page.LoadPageStateFromPersistenceMedium()处的System.Web.UI.HiddenFieldPageStatePersister.Load()上的Util.DeserializeWithAssert(IStateFormatter formatter,String serializedState)位于System.Web.UI.Page的System.Web.UI.Page.ProcessRequest()的System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)中的.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint) System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep上的ASP.content_aspx.ProcessRequest(HttpContext上下文)中的.ProcessRequest(HttpContext上下文)。在System.Web.HttpApplication.ExecuteStep上执行()(IExecutionStep步骤,布尔& completedSynchronously)

浏览器:Mozilla / 4.0(兼容; Synapse)

  • 回传 错误来源:System.Web

错误Try / Catch:System.ArgumentException:无效的回发或回调参数。使用| pages enableEventValidation = | true | / |启用事件验证在配置或|%@ Page EnableEventValidation = | true | %|在一个页面中。出于安全考虑,此功能可验证回发或回调事件的参数是否为最初呈现它们的服务器控件的__ sQueEl_clean。如果数据有效且符合预期,请使用ClientScriptManager.RegisterForEventValidation方法注册回发或回调数据以进行验证。在System.Web.UI.Page.ProcessPostData(NameValueCollection postData,System.Web.UI.Page.ProcessPostData)的System.Web.UI.WebControls.TextBox.LoadPostData(String postDataKey,NameValueCollection postCollection)上的System.Web.UI.ClientScriptManager.ValidateEvent(String uniqueId,String参数)中System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)

的布尔值fBeforeLoad)

错误信息:类型的异常| System.Web.HttpUnhandledException |被扔了。

HttpErrorCode:500

堆栈跟踪:System.Web.UI.Page.ProcessRequestMain上的System.Web.UI.Page.HandleError(Exception e)处于System.Web.UI.Page.ProcessRequestMain(布尔值includeStagesBeforeAsyncPoint,布尔值includeStagesAfterAsyncPoint)处于布局includeStagesBeforeAsyncPoint ,System.Web.HttpApplication.CallHandlerExecutionStep.System上的ASP.category_aspx.ProcessRequest(HttpContext上下文)的System.Web.UI.Page.ProcessRequest(HttpContext上下文)中的System.Web.UI.Page.ProcessRequest()处的布尔includeStagesAfterAsyncPoint) System.Web.HttpApplication.ExecuteStep中的.Web.HttpApplication.IExecutionStep.Execute()(IExecutionStep step,Boolean& completedSynchronously)

浏览器:Mozilla / 5.0(iPhone; CPU iPhone OS 6_0_1,如Mac OS X)AppleWebKit / 536.26(KHTML,如Gecko)版本/ 6.0 Mobile / 10A523 Safari / 8536.25

2 个答案:

答案 0 :(得分:1)

服务器场中所有服务器上的计算机密钥(http://msdn.microsoft.com/en-us/library/w8h3skw9%28v=vs.71%29.aspx)值是否相同?

答案 1 :(得分:0)

我已经看到了类似的问题,并且在调查中我们得出结论,这是由于垃圾邮件程序命中我们的网站 - 即尝试在没有获得正确的视图状态的情况下提交值,并且视图状态正在完成它的确实是什么旨在做(保护您的回发免受无效数据 - 恶意或其他)。

我希望这也是你所看到的。如果你有很多机器人,比如谷歌和MSN等机器人,几乎可以肯定你也会遇到坏机器人。

请参阅以下SO搜索结果:https://stackoverflow.com/search?q=asp.net+spambot

this one这样的文章可能有助于减轻您对错误的担忧。

奇怪的是,错误信息让我们发现了一个疯狂的追逐尝试检测复杂的内部问题,而不仅仅是明确地说明了“在野外” ,这个场景最简单和最可能的原因是你被一个spambot击中“有一些建议或文章,指的是建议如何确认这一点。