我的ASP.net网页出现以下错误:
Base-64字符数组的长度无效。
当用户在上一个请求完成之前激活ajax请求时,会发生这种情况。如何防止发生此错误?
编辑:这是堆栈跟踪。因为错误似乎没有在我自己的代码中发生,所以我不知道该怎么做。
在System.Convert.FromBase64String(String s) 在System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) 在System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter,String serializedState) 在System.Web.UI.HiddenFieldPageStatePersister.Load()
答案 0 :(得分:0)
您可以尝试在ajax请求期间阻止后续请求:
function OnRequestStart(sender, args) {
if (args.EventTargetElement) {
var control = document.getElementById("<%= SomeButton.ClientID %>");
if (control != null) {
if (args.EventTargetElement.id == control .id) {
control .disabled = true;
}
}
}
}
function OnResponseEnd(sender, args) {
if (args.EventTargetElement) {
var control = document.getElementById("<%= SomeButton.ClientID %>");
if (control != null) {
if (args.EventTargetElement.id == control .id) {
control .disabled = false;
}
}
}
}
答案 1 :(得分:-2)
Base64字符串的长度是三的倍数。虽然我无法分辨出无效的Base64字符串来自何处,但似乎有些代码试图解码一个字符串,该字符串是一个损坏的Base64字符串,或者根本不是Base64字符串。