以我的经验,这个错误往往是由用户双击触发回发的按钮引起的。第二个回发请求取消了第一个。第一个请求的viewstate只是部分提交了,所以是无效的,但是由于已经断开连接,无法将错误发送给浏览器,从而触发了顶层错误。如果用户做某事两次导致麻烦,这可能是一个更大的问题。否则,可以简单地过滤这些错误。这是在 ELMAH 中过滤掉类似错误的一个很好的例子:
https ://stackoverflow.com/a/2549509/267448
如果您使用的是 ASP.NET WebForms,这里有一些代码可以在回发期间禁用触发控制:http:
//disturbedbuddha.wordpress.com/2007/12/10/disabling-a-trigger-control-during-asynchronous-postback /
请注意,如果您禁用 HTML <input type="submit"> 按钮,它将从您的表单变量中排除,因此您的服务器端 Click 事件不会触发。将其更改为 <input type="button"> 可以解决此问题。在 WebForms 中,这将是 <asp:Button UseSubmitBehavior="False" />。
以上适用于 WebForms AJAX 页面,但这里还有一些我为其他页面提出的 jQuery。
$(function () {
$("a[href^='javascript']").click(function (event) {
if (event.target.disabled)
return false;
event.target.disabled = true;
setTimeout(function () {event.target.disabled = false;}, 250);
});
});