Что вызвало это «Неверная длина для массива Base-64 char» - PullRequest
88 голосов
/ 13 мая 2009

У меня здесь очень мало дел. Я не могу воспроизвести это локально, но когда пользователи получают ошибку, я получаю автоматическое уведомление об исключении по электронной почте:

Invalid length for a Base-64 char array.

  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.HiddenFieldPageStatePersister.Load()

Я склонен думать, что существует проблема с данными, которые назначаются для просмотра состояния. Например:

List<int> SelectedActionIDList = GetSelectedActionIDList();
ViewState["_SelectedActionIDList"] = SelectedActionIDList;

Трудно угадать источник ошибки, не имея возможности воспроизвести ошибку локально.

Если у кого-нибудь был опыт с этой ошибкой, мне бы очень хотелось узнать, что вы узнали.

Ответы [ 12 ]

0 голосов
/ 19 марта 2012

Во время первоначального тестирования для Membership.ValidateUser с SqlMembershipProvider я использую алгоритм хеширования (SHA1) в сочетании с солью, и, если я изменил длину соли на длину, не делимую на четыре, я получил эту ошибку.

Я не пробовал ни одного из исправлений выше, но если соль изменяется, это может помочь кому-то определить это как источник этой конкретной ошибки.

0 голосов
/ 01 июля 2010

Это из-за огромного состояния просмотра. В моем случае мне повезло, так как я не использовал состояние просмотра. Я только добавил enableviewstate="false" в тег формы и состояние просмотра изменилось с 35k до 100 символов

...