回发或回调参数无效/视图状态无效
我们有在IIS 7.5上运行的asp.net(v3.5)网站,我们的应用程序池是2.0。该站点也位于具有粘性会话的负载平衡服务器场中。 平均而言,我们每天大约会获得200至300个视图状态错误,并且回发错误每天为1,000至2,000个。回发或回调参数无效/视图状态无效
具有最多回发错误的页面包含一个绑定了许多项的asp datalist。除了过滤和分页的下拉菜单以及一些回发的asp超链接。
对于viewstate,这些页面使用ajax选项卡,asp超链接,模式弹出式扩展器和asp下拉菜单。
该网站确实获得了大量的流量,并且有很多机器人,例如Google和MSN。
我们已经尝试了以下内容:对某些控件
- 禁用ViewState中,以尽量减少ViewState的大小
- 移动视图状态到数据库
- 压缩的视图状态
- 移动视图状态的底部
以上都不帮助我们解决我们的问题。
任何帮助解决这个问题将非常感谢你。
与错误信息更新:
- 视图状态
错误来源:System.Web程序
错误的try/catch:System.Web.UI.ViewStateException:无效的视图状态。客户端IP:。 。。 端口:* **的User-Agent: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 agwlrhgchwjmux58cjlu2bbh7ayitfevapzt21pn92du5zcnmiajfxfou1motqkl8hqmlbjj0hxhpi5j5gg5xdxpz5xkqfdflw2wgqv fjxilhqm6mwyjsmif6r8wtdjkrsxxmapyeq61lfa8 7zntc2v3v8rup1kgm0ssp7bb zgcfy ...
错误信息:验证视图状态MAC失败。如果此应用程序由Web场或群集托管,请确保| machineKey |配置指定相同的validationKey和验证算法。 AutoGenerate不能在群集中使用。
HttpErrorCode:500
堆栈跟踪:在System.Web.UI.ViewStateException.ThrowError(异常内,字符串persistedState,字符串errorPageMessage,布尔macValidationError)在System.Web.UI.ObjectStateFormatter.Deserialize(字符串inputString )在System.Web.UI.Util.DeserializeWithAssert(IStateFormatter格式化器,字符串serializedState)在System.Web.UI.HiddenFieldPageStatePersister.Load()在System.Web.UI.Page.LoadPageStateFromPersistenceMedium()在System.Web.UI.Page .LoadAllState()在System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)在System.Web.UI.Page.ProcessRequest(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)在System.Web.UI.Page.Process申请()在System.Web.UI.Page.ProcessRequest(HttpContext的背景下)在ASP.content_aspx.ProcessRequest(HttpContext的背景下)在System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()的系统。 Web.HttpApplication.ExecuteStep(IExecutionStep步骤,布尔&同步完成)
浏览器:Mozilla/4.0(兼容;突触)
- 回传 错误来源:System.Web程序
错误的try/catch信息:System.ArgumentException:无效的回发或回调参数。使用| pages enableEventValidation = | true |/|来启用事件验证在配置中或|%@ Page EnableEventValidation = | true | %|在一个页面中。为了安全起见,此功能验证回发事件或回调事件的参数来自最初呈现它们的服务器控件** _ sQueEl_clean。如果数据有效且预期,请使用ClientScriptManager.RegisterForEventValidation方法为注册回发或回调数据进行验证。在System.Web.UI.ClientScriptManager.ValidateEvent(字符串UNIQUEID,字符串参数)在System.Web.UI.WebControls.TextBox.LoadPostData(字符串postDataKey,NameValueCollection中postCollection)在System.Web.UI.Page.ProcessPostData(NameValueCollection中POSTDATA,布尔fBeforeLoad)在System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)
错误信息:异常类型| System.Web.HttpUnhandledException |被抛出。
HttpErrorCode:500
堆栈跟踪:在System.Web.UI.Page.HandleError(例外五)在System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)在System.Web程序。 UI.Page.ProcessRequest(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)在System.Web.UI.Page.ProcessRequest()在System.Web.UI.Page.ProcessRequest(HttpContext的上下文)在ASP.category_aspx.ProcessRequest(HttpContext的上下文)中的系统.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()at System.Web.HttpApplication.ExecuteStep(IExecutionStep step,布尔&同步完成)
浏览器:Mozilla/5.0(iPhone; CPU的iPhone OS 6_0_1像Mac OS X)AppleWebKit/536.26(KHTML,像壁虎)版本/ 6.0移动/ 10A523 Safari/8536.25
我见过类似的问题,经调查我们可以得出结论,这是由于通过spambots点击我们的网站 - 即试图提交价值观而不是先获得正确的视图状态,视图状态正在做它设计要做的事情(保护你的回发免受无效数据 - 恶意或其他)。
这可能是你所看到的也就是我的期望。如果你得到很多机器人,如谷歌和MSN击中它,这几乎可以肯定你也变坏机器人。
参考这些所谓的搜索结果:像this onehttps://stackoverflow.com/search?q=asp.net+spambot
和文章可能有助于减轻你对错误的担忧。
它确实让我感到奇怪,错误消息会让我们在一场疯狂的追逐中尝试检测复杂的内部问题,而不仅仅是明确地指出“在野外,最简单的这种情况最可能的原因是,你被一个spambot击中“有一些建议或文章可以参考如何确认这一点。
我会看看谢谢。 – Kaos 2013-03-13 14:15:39
机会是您的datalist正在被数据绑定到与回发之前不同的东西的数据源。另一种解决方案是使用ajax而不是依靠回发。除此之外,我们需要更具体的信息。 – 2013-03-13 14:02:03
@布拉德谢谢我可以提供哪些其他信息给您? – Kaos 2013-03-13 14:04:01
你能发布你收到的确切错误吗?可以帮助我们诊断问题。 – 2013-03-13 14:04:02