Asp.net Base-64字符数组的长度无效
我从我们的一个网页收到这个错误:“Base-64字符数组的长度无效” 这是我的异常中的堆栈跟踪:Asp.net Base-64字符数组的长度无效,asp.net,Asp.net,我从我们的一个网页收到这个错误:“Base-64字符数组的长度无效” 这是我的异常中的堆栈跟踪: at System.Convert.FromBase64String(String s) at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) at System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserial
at System.Convert.FromBase64String(String s)
at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString)
at System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState)
at System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState)
at System.Web.UI.SessionPageStatePersister.Load()
代码隐藏.cs:
protected override PageStatePersister PageStatePersister
{
get
{
return new SessionPageStatePersister(Page);
}
}
什么会导致此错误?我在解密过程中也遇到了同样的问题,当加密字符串中有空格时,有时会出现此问题,我所做的是用空格替换空格+
cryptedString = cryptedString.Replace(" ", "+");
这可能也是您的问题。如果Base64字符串中有空格,则会引发此错误。我看到过这种错误编码的Base64字符串从SagePay(以前是Protx)传递过来 它的原因是Request.QueryString[]对字符串进行解码,并将+(base64字符串中的有效字符)视为一个空格(这与urlencoding将+视为一个空格一样正确) 我在以下文章中对此进行了描述: