ASP.Net事件验证在安卓手机浏览器上失败

3
我们正在运行一个相当大的网站,很多访问者开始使用基于Android的手机来访问该网站。然而,当他们尝试登录时,我们会得到一个事件验证错误:
无效的回传或回调参数。事件验证是使用在配置中启用的,或在页面中使用<%@ Page EnableEventValidation="true" %>。出于安全考虑,此功能验证回传或回调事件的参数是否来自最初呈现它们的服务器控件。如果数据有效且符合预期,请使用ClientScriptManager.RegisterForEventValidation方法注册回传或回调数据进行验证。
有没有人知道一种方法可以解决这个问题,而不必完全禁用事件验证?
并不是每次访问都会出现这种情况,但它发生的频率足以成为一个问题。
此外,我们从未在基于PC的浏览器(IE、FF、Chrome、Safari、Opera等)上遇到过这些问题。
编辑:
此页面上没有updatepanels,也没有自定义__doPostback代码等。它几乎是纯净的,只有一个简单的LinkButton会引起回传。
此外,这个错误也发生在其他很多页面上(刚刚发现),所以我怀疑这不是一个孤立的设计错误。
我认为更可能是基于Android的浏览器和ASP.Net整体上存在问题。

你需要提供更多信息才能给出解决方案 - 你可以搜索以找到错误的来源,通过在页面上禁用一些控件的状态视图来开始。 - Aristos
将其视为一个想法: http://stackoverflow.com/questions/3420635/datagrid-button-invalid-postback-or-callback/3421436#3421436 - Aristos
我更新了问题并提供了一些信息。然而,我无法看出这与视图状态有任何关系,因为事件验证只检查提交的输入是否对应于有效值列表。 - Steffen
我在我们的日志中看到了任何使用视图状态验证的ASP.NET应用程序都会出现这种情况 - 在使用苹果Webkit(根据浏览器配置字符串)的Android设备上。 Android浏览器可能会破坏视图状态吗? 我知道一些旧版本的Safari对隐藏字段有更小的最大长度,并导致类似的问题。也许Andriod上的WebKit浏览器也有类似的问题? - David
1个回答

0

我想我在这里找到了答案:

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

我认为这种情况的原因是,当我在Android模拟器上正常浏览时,我无法复制这个问题,但如果在页面加载完成之前点击按钮,我就可以复制。此外,即使是3G网络也足够慢,以至于这种情况很可能发生,因为不耐烦的用户会在看到他们想要的选项时立即点击。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接