我从我们的某个网页收到此错误:“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.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);
}
}
什么会导致此错误?
答案 0 :(得分:2)
如果Base64字符串中有空格,则抛出此错误。我已经看到这种错误编码的Base64字符串从SagePay传递(以前是Protx)。
因为Request.QueryString []对字符串进行解码并将+(base64字符串中的有效字符)视为空格(这是正确的,因为urlencoding将+视为空格。
我在以下文章中写过:
答案 1 :(得分:0)
我在解密过程中遇到同样的问题,当加密字符串中有空格时有时会发生这个问题,我所做的就是用+
替换空格cryptedString = cryptedString.Replace(" ", "+");
这也可能是你的问题。