Пошаговая инструкция как исправить ошибку «недопустимые знаки в строке base64» в Справки БК.
При сохранении справки используется метод кодирования информации Base64. Он же выполняет роль дешифратора файла, в котором хранится заполненная ранее справка.
Если при дешифровке происходит сбой или в файле обнаруживаются недопустимые символы, то появляется данная ошибка.
Чаще всего она возникает при открытии ранее заполненных справок или их печати. Выглядит сообщение так:
Для начала убедитесь, что у вас установлена та же версия СПО Справки БК, в которой последний раз сохранялся открываемый файл. Иногда новая сборка программы не может открыть документы, сохранённые в предыдущих версиях.
Известны случаи наоборот — когда установка свежей версии решала проблему.
Скачать текущую и прежние СПО версии можно по ссылке.
Если версия программы та же, но файл не открывается, первое, что делать — сохраните копию оригинального файла с декларацией! Это нужно, чтобы в случае неверного действия окончательно не потерять данные.
Попробуйте восстановить прежнюю версию файла. Если на вашем компьютере делается бекап или вы сразу после заполнения сохранили копию.
Также может помочь установка свежей версии программы на Windows 10. Есть случаи, когда на Windows 7 или XP проблема с base64 есть, а на «десятке» всё прекрасно открывается.
Если это не ваш случай, то кликните на файл правой кнопкой мыши и откройте его в текстовом редакторе. Например, в Блокноте.
Откроется окно с непонятным набором символов — это зашифрованные данные Base64. В них содержится ошибка из-за чего СПО Справки БК не могут открыть файл.
В тексте не должно быть символов кириллицы. Если их нет и написанное выше тоже не помогло — значит документ повреждён и, к сожалению, сделать ничего нельзя. Только заполнять заново…
Теоретически, можно попытаться расшифровать данные через онлайн-сервисы дешифровки Base64, как советую остальные сайты. Однако, при написании этой статьи я протестировала несколько сервисов, но ни один не сработал.
Обновлено 11 июля 2021 г.
Пошаговая инструкция как исправить ошибку «недопустимые знаки в строке base64» в Справки БК.
При сохранении справки используется метод кодирования информации Base64. Он же выполняет роль дешифратора файла, в котором хранится заполненная ранее справка.
Если при дешифровке происходит сбой или в файле обнаруживаются недопустимые символы, то появляется данная ошибка.
Чаще всего она возникает при открытии ранее заполненных справок или их печати. Выглядит сообщение так:
Для начала убедитесь, что у вас установлена та же версия СПО Справки БК, в которой последний раз сохранялся открываемый файл. Иногда новая сборка программы не может открыть документы, сохранённые в предыдущих версиях.
Известны случаи наоборот — когда установка свежей версии решала проблему.
Скачать текущую и прежние СПО версии можно по ссылке.
Если версия программы та же, но файл не открывается, первое, что делать — сохраните копию оригинального файла с декларацией! Это нужно, чтобы в случае неверного действия окончательно не потерять данные.
Попробуйте восстановить прежнюю версию файла. Если на вашем компьютере делается бекап или вы сразу после заполнения сохранили копию.
Также может помочь установка свежей версии программы на Windows 10. Есть случаи, когда на Windows 7 или XP проблема с base64 есть, а на «десятке» всё прекрасно открывается.
Если это не ваш случай, то кликните на файл правой кнопкой мыши и откройте его в текстовом редакторе. Например, в Блокноте.
Откроется окно с непонятным набором символов — это зашифрованные данные Base64. В них содержится ошибка из-за чего СПО Справки БК не могут открыть файл.
В тексте не должно быть символов кириллицы. Если их нет и написанное выше тоже не помогло — значит документ повреждён и, к сожалению, сделать ничего нельзя. Только заполнять заново.
Теоретически, можно попытаться расшифровать данные через онлайн-сервисы дешифровки Base64, как советую остальные сайты. Однако, при написании этой статьи я протестировала несколько сервисов, но ни один не сработал.
2 комментария
Жанна
У меня в самом начале стояло несколько русских букв. Понятия не имею откуда они там взялись, но их удаление помогло. Спасибо!
Я пытался декодировать через онлайн-сервисы — они вместо букв показывают черные ромбики с вопросами. Попробую старую версию у вас скачать.
Татьяна
Подскажите пожалуйста, при заполнении справки появилась ошибка о недопустимая длина массива Base-64. Скажите, как устранить указанную ошибку?
Ольга Колпакова
Обновите СПО до последней версии, её можно скачать по ссылке: https://справки-бк.рф/скачать
Оставить комментарий
Ваш email будет скрыт. Обязательные поля отмечены символом *
Предоставление справки 460 является обязанностью госслужащего согласно антикоррупционного законодательства.
Источник
Справки БК не запускается на Windows 10 или Windows 7
Обновлено 15 июля 2021 г.
Решение проблемы с запуском, когда программа Справки БК не открывается на компьютере с Windows после установки, или просто не запускается.
Как и в любом другом ПО, в работе программы могут возникать ошибки. К примеру, СПО Справки БК не открывается на компьютере после установки. Проблема неприятная, но легко решаемая. Есть несколько возможных вариантов.
Сначала убедитесь, что у вас установлена самая новая версия Справки БК.
Блокировка брандмауэром Windows
Брандмауэр служит для защиты операционной системы от вредоносных объектов. Он довольно неплохо выполняет свою работу, но иногда блокирует то, что не нужно. Требуется выключить брандмауэр и посмотреть на поведение программы.
- 1. Кликните по кнопке «Пуск», перейдите в каталог «Служебные – Windows» и запустите панель управления.
Если после отключения брандмауэра программа запускается, то дело было именно в блокировке. Придется настраивать его правила. Выполняется это в самом брандмауэре. Попасть в его настройки можно при помощи панели управления, в которой требуется кликнуть по пункту «Брандмауэр Windows».
Если у вас установлен сторонний антивирус с файрволлом, то блокировка может возникать и с его стороны. Попробуйте временно отключить защиту. Для разных антивирусов инструкция разная. Но если у вас NOD32 от ESET, то щелкните по значку в трее правой кнопкой мыши, выберите «Временно отключить файрволл», выставьте временной промежуток (к примеру, 30 минут) и нажмите ОК.
В Windows 10 по умолчанию установлена и активирована последняя версия компонента NET. Framework. Но программе для работы требуется именно версия 3.5. Поэтому ее нужно активировать в настройках операционной системы.
- 1. Кликните по кнопке «Пуск», выберите каталог «Служебные – Windows» и запустите панель управления.
Стоит заметить, что для Windows 7 и других версии ОС инструкция точно такая же. Практически все пункты совпадают. Поэтому с активацией нужной версии компонента не должно возникнуть никаких проблем. Не забудьте только перезагрузить компьютер.
Переустановка Справки БК
Если ничего из вышеперечисленного не помогает, это значит, что Файлы самой программы повреждены. Здесь поможет только полная ее переустановка. Процесс довольно простой и понятный.
- 1. Перейдите на страницу загрузки, в блоке «Последняя версия» нажмите кнопку «Скачать» на самой с вежей версии СПО.
- 2. Откройте проводник, перейдите в каталог загрузок и откройте скачанный архив.
- 3. Запустите исполняемый файл двойным кликом. В мастере установки сразу щелкните «Далее».
После установки можно попробовать запустить программу. Но не забудьте перед переустановкой удалить старую версию приложения. Делать это нужно при помощи панели управления и пункта «Программы и компоненты». Найдите в списке программу, щелкните по ней правой кнопкой мыши и выберите «Удалить». Далее следуйте указаниям мастера.
Смена стандартного каталога для установки требуется если Справки БК не запускается на Windows 10, вылетает или сразу закрывается. Windows 10 по умолчанию устанавливает СПО в папку AppData, что может вызвать вылеты и ошибки при открытии приложения. Поэтому лучше сменить папку на другую.
Все перечисленные варианты позволят устранить проблему с программой Справки БК, если она не запускается. Если же ничего не помогает, остается переустановить операционную систему Windows либо использовать другой ПК для заполнения справки о доходах.
Оставить комментарий
Ваш email будет скрыт. Обязательные поля отмечены символом *
Источник
Недопустимые знаки в строке base64 справки бк как исправить
Вопрос
Коллеги, доброе утро.
Столкнулся со странной ошибкой при попытке добавить отчёт SCSM в избранные отчёты. Настроил параметры отчёта, нажал добавить в «избранные», назвал отчёт следующим образом «Все инциденты находящиеся в работе с понедельника текущей недели по сегодняшний день» и нажал «ОК». Отчёт добавился в избранные, но при переходе на вкладку столкнулся с ниже приведённой ошибкой.
Дата: 08.12.2011 10:06:11
Приложение: System Center Service Manager
Версия приложения: 7.0.6555.0
Серьезность: Ошибка
Сообщение: Недопустимая длина массива знаков Base-64.
System.FormatException: Недопустимая длина массива знаков Base-64.
в System.Convert.FromBase64String(String s)
в Microsoft.EnterpriseManagement.UI.SdkDataAccess.DataAdapters.SrsDataAdapterBase.TryGetInstanceId(IDictionary`2 parameters, String& instanceId)
в Microsoft.EnterpriseManagement.UI.SdkDataAccess.DataAdapters.EnterpriseFavoriteReportAdapter.GetDataFromSRS(ServiceManagerReportingGroup reportingGroup, AdapterQueryParameters queryParameters)
в Microsoft.EnterpriseManagement.UI.SdkDataAccess.DataAdapters.SrsDataAdapter`1.DoAction(DataQueryBase query, IList`1 dataSources, IDictionary`2 parameters, IList`1 inputs, String outputCollectionName)
в Microsoft.EnterpriseManagement.UI.SdkDataAccess.SdkNodeProvider.GetDataFromAdapter(Uri adapterAddress, IList`1 dataSources, IDictionary`2 parameters, IList`1 inputs)
в Microsoft.EnterpriseManagement.UI.SdkDataAccess.SdkNodeProvider.GetNode(Uri providerRoot, NavigationModelNodeBase parentNode, String nodeName)
в Microsoft.EnterpriseManagement.ConsoleFramework.NavigationNodeProvider.GetNode(Uri providerRoot, Uri nodeLocation)
в Microsoft.EnterpriseManagement.ConsoleFramework.NavigationModelAdaptor.GetNode(DataQueryBase query, IDictionary`2 parameters)
в Microsoft.EnterpriseManagement.ConsoleFramework.NavigationNodeProvider.GetNode(Uri providerRoot, Uri nodeLocation)
в Microsoft.EnterpriseManagement.ConsoleFramework.NavigationModelAdaptor.GetNode(DataQueryBase query, IDictionary`2 parameters)
в Microsoft.EnterpriseManagement.ConsoleFramework.NavigationNodeProvider.GetNode(Uri providerRoot, Uri nodeLocation)
в Microsoft.EnterpriseManagement.ConsoleFramework.NavigationModelAdaptor.GetNode(DataQueryBase query, IDictionary`2 parameters)
в Microsoft.EnterpriseManagement.ConsoleFramework.NavigationNodeProvider.GetNode(Uri providerRoot, Uri nodeLocation)
в Microsoft.EnterpriseManagement.ConsoleFramework.NavigationModelAdaptor.GetNode(DataQueryBase query, IDictionary`2 parameters)
в Microsoft.EnterpriseManagement.ConsoleFramework.NavigationModelAdaptor.DoAction(DataQueryBase query, IList`1 dataSources, IDictionary`2 parameters, IList`1 inputs, String outputCollectionName)
в Microsoft.EnterpriseManagement.UI.DataModel.QueryQueue.StartExecuteQuery(Object sender, ConsoleJobEventArgs e)
в Microsoft.EnterpriseManagement.ServiceManager.UI.Console.ConsoleJobExceptionHandler.ExecuteJob(IComponent component, EventHandler`1 job, Object sender, ConsoleJobEventArgs args)
Анамнез:
Есть мнение, что проблема в этом. При попытке сменить тип Collation SSRS идёт отказ.
Вопросы:
Источник
Недопустимые знаки в строке base64 справки бк
Здравствуйте, в этой статье мы постараемся ответить на вопрос: «Недопустимые знаки в строке base64 справки бк». Также Вы можете бесплатно проконсультироваться у юристов онлайн прямо на сайте.
А также нормативными актами предусмотрена полная или частичная компенсация налогов за три предшествующих года.
Чем это может обернуться? И нужно ли подать корректировку.», «text»: «При поступлении на гос службу допустила ошибку при заполнении справки БК. Чем это может обернуться?
При поступлении на гос службу допустила ошибку при заполнении справки БК. Чем это может обернуться? И нужно ли подать корректировку.
Пример заполнения декларации ЕНВД за первый квартал 2019 года
Не выдает. Через файл-> выбрать принтер получается указать нужный принтер, но ситуации это не меняет. В этом же кабинете на соседнем компьютере программа печатает без проблем.
Да успешна, пробная печать из свойств принтера и печать из других программ проходит успешна. В свойствах программы уже стояла галочка запускать программу от имени администратора. А вот формат бумаги я не проверял.
СПО Справки БК — является крайне простым в эксплуатации. Для того, чтобы заполнить новую справку достаточно запустить программу и выбрать во всплывающем окне пункт «Создать новый пакет документов». После этого вы увидите перечень готовых форм с полями.
В соответствии с Методическими рекомендациями «По вопросам представления сведений о доходах, расходах, об имуществе и обязательствах имущественного характера и заполнения соответствующей формы справки в 2017 году (за отчетный 2016 год)», п. 31.
Представление сведений в случае увольнения служащего (работника) в период с 1 января по 1(30) апреля 2019 г. в соответствующее структурное подразделение государственного органа, в котором он замещал должность 31 декабря 2018 г., не является нарушением.
Теоретически, можно попытаться расшифровать данные через онлайн-сервисы дешифровки Base64, как советую остальные сайты. Однако, при написании этой статьи я протестировала несколько сервисов, но ни один не сработал.
Если последний день срока представления сведений приходится на нерабочий день, то сведения представляются в последний рабочий день.
Программы, направленные на автоматизацию документооборота, дают возможность облегчить жизнь офисных сотрудников. Особенно этот процесс актуален для госслужащих, которые перегружены бумажной работой.
Основной и самый плюс этого СПО в том, что данные сохраняются, в случае ошибки можно всегда переделать очень быстро, или в случае представлений данных в следующем году — не придется заполнять паспортные данные, а только изменить те графы, которые поменялись за год, такие как годовой доход, приобретенное движимое и недвижимое имущество.
Печать невозможна. Имеются проблемы на вашем компьютере с совместимостью драйверов или настройкой принтера. Попробуйте переустановить драйвер или изменить настройки принтера.
В деятельности государственных служащих есть одно существенное отличие, например, от работников офисного сегмента: заработная плата, которую они получают, не перечисляется из заработанных организацией средств. Финансовое обеспечение оплаты труда идет из федерального либо регионального бюджета.
Если при сохранении или отправки декларации в печать система выявляет пустые обязательные поля или иные неточности заполнения, некорректный раздел выделяется красным цветом и на экран выводится соответствующее уведомление с указанием причин.
Программа распространяется бесплатно, скачать последнюю версию 2.4.1 можно на официальном сайте по ссылке ниже.
Образец заполнения справки о доходах госслужащего 2018 года
Если Вы заметили ошибку в тексте, выделите необходимый фрагмент и нажмите Ctrl Enter. Заранее благодарны!
Сроки действия справки могут существенно отличатся в зависимости от той организации, в которую ее необходимо предоставить, но обычно этот срок не превышает одного месяца.
Если на бумажном формате справки обнаружены неточности, документ создаётся заново.
Выписывает справку, как правило, специалист бухгалтерского отдела, который затем передает ее на подпись руководителю предприятия. Для того, чтобы ее получить заинтересованному сотруднику достаточно обратиться к руководству компании с письменным заявлением – отказать руководство не вправе. В течение трех дней с момента запроса, сотрудник должен получить требуемый документ.
На заметку! Данный перечень может изменяться, поэтому в каждом случае следует предварительно уточнить у своего инспектора, попадает ли ваша ситуация под исчисление или возврат подоходного.
Доброго времени суток. Проблема: Не печатает справки БК на принтер Windows 8.1 и NetFramework 4.7. Т.е. посылает на печать, но в принтере не выводит ничего. В чем проблема?
Справки для госслужбы по счетам
Справки БК — это специальное программное обеспечение (СПО), которое разработано по заказу Федеральной Служба Безопасности РФ и размещено на официальном сайте Администрации Президента. Как несложно догадаться из названия, данное решение помогает с составлением различной финансовой отчетности.
В соответствии с Методическими рекомендациями по вопросам представления сведений о доходах, расходах, об имуществе и обязательствах имущественного характера и заполнения соответствующей формы справки в 2018 году (за отчетный 2017 год) (81.
Для установки программы не требуются крутые характеристики компьютера, на любом windows, главное свободные 3,1 мб памяти — смешно!
Для начала убедитесь, что у вас установлена та же версия СПО Справки БК, в которой последний раз сохранялся открываемый файл. Иногда новая сборка программы не может открыть документы, сохранённые в предыдущих версиях.
Справка бк для военнослужащих по контракту как заполнить
Попробуйте восстановить прежнюю версию файла. Если на вашем компьютере делается бекап или вы сразу после заполнения сохранили копию.
После заполнения обязательных полей, нужно отметить галочкой подтверждение полноты и достоверности указанных сведений.
Разработчики предоставляют возможность скачать «Справку БК» бесплатно без предварительной регистрации на сайте.
Программа Справки БК поможет заполнить справки о доходах и расходах, а также об имуществе и обязательствах имущественного характера. Вся информация соответствует установленным указам Президента России и постановлениям Правительства РФ.
Справки БК 2019 года — специальное программное обеспечение, предназначенное для заполнения справок о доходах, расходах и имущественных ценностях. Для новичков предусмотрена пошаговая инструкция по управлению софтом. В процессе работы можно запустить удобные подсказки, отображаемые в виде всплывающей строки в углу экрана.
Для того чтобы получить доступ к приложению «Справки БК», необходимо нажать на соответствующую ссылку, расположенную в конце списка, который находится в правой части страницы.
Служащий (работник) не представляет сведения, если он назначен на должность, включенную в соответствующий перечень должностей, или временно замещает указанную должность после 31 декабря отчетного года.
Несколько иная ситуация, когда программа БК запускается корректно, но в полях, предназначенных для заполнения, пропечатываются непонятные иероглифы. Эта ошибка характерна для раздела сведений о заявителе. Проблема кроется в BDE Administrator, который установлен на компьютере.
Одно из главных преимуществ этого СПО заключается в сохранении информации, что позволяет в случае некорректного заполнения не переделывать заново весь документ, а лишь исправить нужную графу. К тому же для создания отчетного документа в следующем налоговом периоде пользователю необходимо только обновить соответствующие графы о доходах и расходах.
С 1 января 2015 года такая информация представляется в виде справки, форма которой утверждена Указом Президента 460 от 23.06.2014.
Мне нравится очень удобное меню, это средний раздел на экране, где идет полный перечень всех разделов, так как бывают ошибки в заполнении, и программа требует их исправление, то чтобы не листать все странички справок, можно сразу выбрать нужный раздел. Государственные служащие – это особая категория трудящихся, доход которых не зависит от деятельности организации-работодателя, функционирующей для того, чтобы получить прибыль, а полностью обеспечивается за счет федерального или регионального бюджета.
Инструкция по заполнению титула
Такие проблемы возникают исключительно в результате несоответствия программного обеспечения ПК заявленным требованиям или при отсутствии дополнительных фалов, обязательных для работы приложения.
База-64 цифры в порядке возрастания от нуля символы верхнего регистра «А» — «Z», символы нижнего регистра «a» — «z», цифры «0» — «9», а символы «+» и «/».
Если это не ваш случай, то кликните на файл правой кнопкой мыши и откройте его в текстовом редакторе. Например, в Блокноте.
СПО «Справки БК» (версия 2.4.1) от 06.03.2018
Еще один момент, который часто в водит в сомнение людей, это 4 раздел «Сведения о счетах и иных кредитных организациях», тут многие пытаются заполнить все поля, хотя если кроме зарплаты на счет не поступали сторонние средства, то следует поставить всего лишь галочку возле «общая сумма денежных поступлений не превышала общий доход лица…».
О том, как правильно заполнить такой документ, как он выглядит в готовом виде, подготовленном для сдачи в контролирующие органы, и как программный продукт под названием «Справки БК» позволяет облегчить жизнь госслужащим, расскажем в этой статье.
Программа оснащена достаточно удобным интерфейсом: каждое поле содержит подсказки, обозначенные знаком вопроса или перевернутым треугольником. Помимо этого удобно расположено меню, находящееся в центральной части экрана, что позволяет быстро находить нужную страницу справки.
Источник
Ошибка Handled Exception при просмотре печати Справки БК
Обновлено 11 июля 2021 г.
Что делать, если высветилась ошибка при просмотре печати Справки БК Handled Exception.
Очень часто при печати или предварительном просмотре документа перед отправкой на принтер появляется эта системная ошибка. Выглядеть она может так (меняется только текст причины появления):
Определить причину этой проблемы неподготовленному пользователю довольно сложно. Это и не нужно, поскольку данное окно является информационным — суть его содержания прямо не влияет на работу программы.
Чтобы продолжить работу в СПО Справки БК и напечатать документ, достаточно нажать на крестик в правом верхнем углу, закрыв сообщение об ошибке.
1 комментарий
Так и есть, но бесит что программа работает настолько нестабильно. В интернете полно вопросов по сбоям и неработающим версиям.
Оставить комментарий
Ваш email будет скрыт. Обязательные поля отмечены символом *
Предоставление справки 460 является обязанностью госслужащего согласно антикоррупционного законодательства.
Источник
у меня очень мало, чтобы идти дальше. Я не могу воспроизвести это локально, но когда пользователи получают ошибку, я получаю автоматическое уведомление об исключении электронной почты:
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()
Я склонен думать, что есть проблема с данными, которые назначаются viewstate.
например:
List<int> SelectedActionIDList = GetSelectedActionIDList();
ViewState["_SelectedActionIDList"] = SelectedActionIDList;
трудно угадать источник ошибки, не будучи в состоянии воспроизвести ошибку локально.
Если у кого-то был опыт работы с этой ошибкой, я очень хотелось бы знать, что вы выяснили.
12 ответов
35
автор: Jimmie R. Houts
после того, как urlDecode обрабатывает текст, он заменяет все символы ‘ + ‘на»… таким образом, ошибка. Вы должны просто вызвать это утверждение, чтобы сделать его base 64 совместимым снова:
sEncryptedString = sEncryptedString.Replace(' ', '+');
Я предполагаю, что что — то слишком часто кодируется или декодируется-или что у вас есть текст с несколькими строками.
строки Base64 должны быть кратны 4 символам в длину-каждые 4 символа представляют 3 байта входных данных. Каким-то образом данные состояния представления передаются обратно ASP.NET поврежден-длина не кратна 4.
вы регистрируете агент пользователя, когда это происходит? Интересно, может, это какой-нибудь дурно воспитанный браузер?.. другой возможно, что есть прокси, делающий непослушные вещи. Аналогично попробуйте зарегистрировать длину содержимого запроса, чтобы вы могли видеть, происходит ли это только для больших запросов.
int len = qs.Length % 4;
if (len > 0) qs = qs.PadRight(qs.Length + (4 - len), '=');
здесь qs
любая строка в кодировке base64
попробуйте это:
public string EncodeBase64(string data)
{
string s = data.Trim().Replace(" ", "+");
if (s.Length % 4 > 0)
s = s.PadRight(s.Length + 4 - s.Length % 4, '=');
return Encoding.UTF8.GetString(Convert.FromBase64String(s));
}
Как упоминали другие, это может быть вызвано тем, что некоторые брандмауэры и прокси-серверы препятствуют доступу к страницам, содержащим большой объем данных ViewState.
ASP.NET 2.0 представил механизм Чанкинга ViewState который разбивает ViewState на управляемые куски, позволяя ViewState проходить через прокси / брандмауэр без проблем.
чтобы включить эту функцию, просто добавьте следующую строку в ваш веб.конфиг файл.
<pages maxPageStateFieldLength="4000">
Это должно не можно использовать в качестве альтернативы уменьшению размера ViewState, но это может быть эффективной остановкой против ошибки «недопустимая длина для массива символов Base-64» в результате агрессивных прокси и тому подобное.
это не ответ, К сожалению. После того, как я столкнулся с прерывистой ошибкой в течение некоторого времени и, наконец, был раздражен достаточно, чтобы попытаться исправить это, я еще не нашел исправления. Я, однако, определил рецепт воспроизведения моей проблемы, который может помочь другим.
в моем случае это исключительно проблема localhost, на моей машине dev, которая также имеет БД приложения. Это .Net приложение 2.0 я редактирую с VS2005. 64-разрядная машина Win7 также имеет VS2008 и .NET 3.5 установленный.
вот что будет генерировать ошибку, из различных форм:
- загрузите новую копию формы.
- ввести некоторые данные, и/или передачи с любым из элементов управления формы. Пока нет существенной задержки, повторяйте все, что хотите, и ошибок не возникнет.
- подождите немного (1 или 2 минуты, может быть, не более 5) и попробуйте другую обратную передачу.
минуту или две задержки «ожидание localhost» и затем» соединение было сброшено » браузером и global.asax
журналы ловушек ошибок приложений:
Application_Error event: Invalid length for a Base-64 char array.
Stack Trace:
at System.Convert.FromBase64String(String s)
at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString)
at System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState)
at System.Web.UI.HiddenFieldPageStatePersister.Load()
в этом случае это не размер viewstate, а что-то связанное с кэшированием страницы и/или viewstate, которое, кажется, кусает меня. Настройка <pages>
параметры enableEventValidation="false"
и viewStateEncryption="Never"
на Web.config
поведение не изменилось. Как и установка maxPageStateFieldLength
к чему-то скромному.
взгляните на свои HttpHandlers. Я заметил некоторые странные и совершенно случайные ошибки за последние несколько месяцев после того, как я реализовал инструмент сжатия (RadCompression от Telerik). Я замечал ошибки, такие как:
- Система.Сеть.ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС.ViewStateException: Недопустимый состояние представления.
и
- Система.Сеть.ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС.ViewStateException: недопустимое viewstate.
Я об этом пишет на моем блоге.
Это из-за огромного состояния представления, в моем случае мне повезло, так как я не использовал viewstate. Я просто добавил enableviewstate="false"
на теге формы и состоянии просмотра пошло от 35k до 100 символов
во время первоначального тестирования на членство.ValidateUser с SqlMembershipProvider, я использую алгоритм хэша (SHA1) в сочетании с солью, и, если я изменил длину соли на длину, не делимую на четыре, я получил эту ошибку.
Я не пробовал любые исправления выше, но если соль изменяется, это может помочь кому-то определить, что источником данной ошибки.
Как сказал Джон Скит, строка должна быть кратна 4 байтам. Но я все еще получал ошибку.
по крайней мере, он был удален в режиме отладки. Поставьте точку останова на Convert.FromBase64String()
затем шаг через код. Чудесным образом, ошибка исчезла для меня это, вероятно, связано с состояниями просмотра и аналогичными другими проблемами, о которых сообщали другие.
кроме решение@jalchr это помогло мне, я обнаружил, что при вызове ATL::Base64Encode
из приложения c++ для кодирования содержимого, которое вы передаете ASP.NET webservice, вам нужно что-то еще. В дополнение к
sEncryptedString = sEncryptedString.Replace(' ', '+');
С решение@jalchr, вы и должны убедиться, что вы не используйте ATL_BASE64_FLAG_NOPAD
флаг ATL::Base64Encode
:
BOOL bEncoded = Base64Encode(lpBuffer,
nBufferSizeInBytes,
strBase64Encoded.GetBufferSetLength(base64Length),
&base64Length,ATL_BASE64_FLAG_NOCRLF/*|ATL_BASE64_FLAG_NOPAD*/);
13.08.15 — 12:24
Передавая в этот метод строку, вызвращается Неопределено.
А если пользоваться веб-сайтом, например Base64.ru, через этот сайт всё корректно расшифровывается.
В чём причина может быть?
1 — 13.08.15 — 12:27
А точно неопределено а не двоичные данные?
2 — 13.08.15 — 12:28
(1) + в описании функции в СП нет варианта с возвращением неопределено
3 — 13.08.15 — 12:28
давай показывай
4 — 13.08.15 — 12:43
5 — 13.08.15 — 12:45
Это тип а не значение
6 — 13.08.15 — 12:45
Нужно убрать режим совместимости
7 — 13.08.15 — 12:59
(5) а у типа «Неопределено» значения какие могут быть ?
8 — 13.08.15 — 13:00
2(7) как ты видишь у себя на скриншоте — никакого
9 — 13.08.15 — 13:01
попробуй сравнить то что тебе возвращается с Неопределено
10 — 13.08.15 — 13:02
тоже самое и возвращается.
Кто-нибудь сталкивался с такой проблемой ?
11 — 13.08.15 — 13:04
убрал режим совместимости?
12 — 13.08.15 — 13:32
база не используется режим совместимости.
Вот пример строки:
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48ZWxlbWVudHMg0JLQtdGA0YHQuNGP0KHRhdC10LzRiz0iMS4wIiDQlNCw0YLQsNCk0L7RgNC80LjRgNC+0LLQsNC90LjRjz0iMjAxNS0wOC0xM01TSzEzOjE3OjU5Ij48emFrYXo+CjxCaXREYXRlPjwvQml0RGF0ZT4KPC96YWthej48L2VsZW1lbnRzPg==
13 — 13.08.15 — 13:37
(12) Ващета 1С ожидает, что у тебя в Base64 закодированы ДвоичныеДанные, а не то, что ты захотел… СП читать надо, хоть иногда.
14 — 13.08.15 — 13:43
(13) а в двоичные данные можно закодировать не всё что захочешь ? :))
15 — 13.08.15 — 13:44
(13) Не в кассу
(12) У меня возвращает двоичные данные:
3C 3F 78 6D 6C 20 76 65 72 73 69 6F… ДвоичныеДанные
16 — 13.08.15 — 13:48
(15) пишешь Base64Значение(«PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48ZWxlbWVudHMg0JLQtdGA0YHQuNGP0KHRhdC10LzRiz0iMS4wIiDQlNCw0YLQsNCk0L7RgNC80LjRgNC+0LLQsNC90LjRjz0iMjAxNS0wOC0xM01TSzEzOjE3OjU5Ij48emFrYXo+CjxCaXREYXRlPjwvQml0RGF0ZT4KPC96YWthej48L2VsZW1lb»)
и возвращаются двоичные данные ?
Какая версия платформы ?
17 — 13.08.15 — 13:48
(15) +
1С:Предприятие 8.3 (8.3.6.2100)
Режим совместимости: Версия 8.2
18 — 13.08.15 — 13:49
(15) +
Base64Значение(«PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48ZWxlbWVudHMg0JLQtdGA0YHQuNGP0KHRhdC10LzRiz0iMS4wIiDQlNCw0YLQsNCk0L7RgNC80LjRgNC+0LLQsNC90LjRjz0iMjAxNS0wOC0xM01TSzEzOjE3OjU5Ij48emFrYXo+CjxCaXREYXRlPjwvQml0RGF0ZT4KPC96YWthej48L2VsZW1lbnRzPg==»)
19 — 13.08.15 — 13:52
(17) сорри, уточню
Режим совместимости интерфейса: Версия 8.2
Режим совместимости: Не использовать
20 — 13.08.15 — 13:56
(19)
а да, эта у меня тоже нормально прочиталась.
А вот эту попробуй
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48ZWxlbWVudHMg0JLQtdGA0YHQuNGP0KHRhdC10LzRiz0iMS4wIiDQlNCw0YLQsNCk0L7RgNC80LjRgNC+0LLQsNC90LjRjz0iMjAxNS0wOC0xM01TSzEzOjE3OjU5Ij48emFrYXo+PEJpZE51bWJlcj7QmNCfMDAwMDAwMjI8L0JpZE51bWJlcj48QmlkRGF0ZT4xMC4wOC4yMDE1PC9CaWREYXRlPjxDb2RlQnV5ZXI+Njc3OTk8L0NvZGVCdXllcj48Q29kZVBvaW50PjAwMDAwMDAwMzQ5PC9Db2RlUG9pbnQ+PFBhc3BvcnRDb2RlPjE10J/QkDAwMDAzMTk3PC9QYXNwb3J0Q29kZT48T3JkZXJMaW5lcz48TGluZT48Q29kZVNLVT4xMjIxNjwvQ29kZVNLVT48UXVhbnRpdHk+NTA8L1F1YW50aXR5PjxHcm9zc1ByaWNlPjYwNS4wNDwvR3Jvc3NQcmljZT48R3Jvc3NBbW91bnQ+MzAyNTI8L0dyb3NzQW1vdW50PjwvTGluZT48L09yZGVyTGluZXM+PC96YWthej48L2VsZW1lbnRzPg==
21 — 13.08.15 — 13:57
(20) неопределено
22 — 13.08.15 — 14:04
Вот подсунул строку в (20)
http://foxtools.ru/Base64
Входные данные не являются действительной строкой Base-64, поскольку содержат символ в кодировке, отличной от Base 64, больше двух символов заполнения или недопустимый символ среди символов заполнения.
При этом в https://www.base64decode.org/
Декодировало:
<?xml version=»1.0″ encoding=»utf-8″?><elements ВерсияСхемы=»1.0″ ДатаФормирования=»2015-08-…….
23 — 13.08.15 — 14:08
(20) ГЫ гы!
Проблема в «/»
Замена на / и усе декодируется
Ты взял откуда-то строку с символом экранировки
24 — 13.08.15 — 14:10
(23) из C, C++, C# кода
25 — 13.08.15 — 15:03
это ответ из веб-сервиса.
Да, уже разобрались, что-то не так выгружалось в интернет сервиса..
igork1966
26 — 13.08.15 — 15:11
(25) Ты не понял, строка из (20) если заменить «/» на «/»
нормально декодируется Base64Значение()
- Remove From My Forums
-
Вопрос
-
Коллеги, доброе утро.
Столкнулся со странной ошибкой при попытке добавить отчёт SCSM в избранные отчёты. Настроил параметры отчёта, нажал добавить в «избранные», назвал отчёт следующим образом «Все инциденты находящиеся в работе с понедельника текущей недели по сегодняшний
день» и нажал «ОК». Отчёт добавился в избранные, но при переходе на вкладку столкнулся с ниже приведённой ошибкой.Дата: 08.12.2011 10:06:11
Приложение: System Center Service Manager
Версия приложения: 7.0.6555.0
Серьезность: Ошибка
Сообщение: Недопустимая длина массива знаков Base-64.System.FormatException: Недопустимая длина массива знаков Base-64.
в System.Convert.FromBase64String(String s)
в Microsoft.EnterpriseManagement.UI.SdkDataAccess.DataAdapters.SrsDataAdapterBase.TryGetInstanceId(IDictionary`2 parameters, String& instanceId)
в Microsoft.EnterpriseManagement.UI.SdkDataAccess.DataAdapters.EnterpriseFavoriteReportAdapter.GetDataFromSRS(ServiceManagerReportingGroup reportingGroup, AdapterQueryParameters queryParameters)
в Microsoft.EnterpriseManagement.UI.SdkDataAccess.DataAdapters.SrsDataAdapter`1.DoAction(DataQueryBase query, IList`1 dataSources, IDictionary`2 parameters, IList`1 inputs, String outputCollectionName)
в Microsoft.EnterpriseManagement.UI.SdkDataAccess.SdkNodeProvider.GetDataFromAdapter(Uri adapterAddress, IList`1 dataSources, IDictionary`2 parameters, IList`1 inputs)
в Microsoft.EnterpriseManagement.UI.SdkDataAccess.SdkNodeProvider.GetNode(Uri providerRoot, NavigationModelNodeBase parentNode, String nodeName)
в Microsoft.EnterpriseManagement.ConsoleFramework.NavigationNodeProvider.GetNode(Uri providerRoot, Uri nodeLocation)
в Microsoft.EnterpriseManagement.ConsoleFramework.NavigationModelAdaptor.GetNode(DataQueryBase query, IDictionary`2 parameters)
в Microsoft.EnterpriseManagement.ConsoleFramework.NavigationNodeProvider.GetNode(Uri providerRoot, Uri nodeLocation)
в Microsoft.EnterpriseManagement.ConsoleFramework.NavigationModelAdaptor.GetNode(DataQueryBase query, IDictionary`2 parameters)
в Microsoft.EnterpriseManagement.ConsoleFramework.NavigationNodeProvider.GetNode(Uri providerRoot, Uri nodeLocation)
в Microsoft.EnterpriseManagement.ConsoleFramework.NavigationModelAdaptor.GetNode(DataQueryBase query, IDictionary`2 parameters)
в Microsoft.EnterpriseManagement.ConsoleFramework.NavigationNodeProvider.GetNode(Uri providerRoot, Uri nodeLocation)
в Microsoft.EnterpriseManagement.ConsoleFramework.NavigationModelAdaptor.GetNode(DataQueryBase query, IDictionary`2 parameters)
в Microsoft.EnterpriseManagement.ConsoleFramework.NavigationModelAdaptor.DoAction(DataQueryBase query, IList`1 dataSources, IDictionary`2 parameters, IList`1 inputs, String outputCollectionName)
в Microsoft.EnterpriseManagement.UI.DataModel.QueryQueue.StartExecuteQuery(Object sender, ConsoleJobEventArgs e)
в Microsoft.EnterpriseManagement.ServiceManager.UI.Console.ConsoleJobExceptionHandler.ExecuteJob(IComponent component, EventHandler`1 job, Object sender, ConsoleJobEventArgs args)———————————————————————————
Анамнез:
- Избранные отчёты с англ. наименованиями успешно создаются, добавляются во вкладку избранные и успешно работают;
- Проблема с отчётами только с русскоязычным наименованием;
- Проверил Collation SQL Server и БД Cyrillic_General_100_CI_AS, а Collation SSRS
Latin_General_CI_AS_KS_WS (SSRS устанавливался в режиме Native в конфигурации по-молчанию);
Есть мнение, что проблема в этом. При попытке сменить тип Collation SSRS идёт отказ.
Вопросы:
- В Collation ли дело?
- Как изменить тип Collation на уже установленном SSRS или его лучше переустановить (есть мнение, что понадобиться переустановка и DW)?
- Как при переустановке только SSRS поведёт себя SM? (полагаю, что отчёты в DW отвалятся напрочь — могу и ошибаться);
- Как удалить этот отчёт, вызывающий ошибки?
- Есть ограничение на длинну наименования отчёта в SCSM или SSRS;
- Как быть если пользователь хочет видеть длинные наименования отчетов;
-
Изменено
8 декабря 2011 г. 9:07
Ответы
-
коллеги, в общем дело решеное.
ПРИЧИНА:
Не поддерживаются наименования отчётов на русском языке длиннее 20 символов (по крайне мере доказал на своем опыте 32, 28, 23 не вошло — ошибку см. выше.);
Что делать:
На сервере, где установлен DW заходим в консоль управления SQL сервер, находим в базе
DWStagingAndConfig таблицу dbo.FavoriteReport. В ней выполняем запрос:SELECT * FROM DWStagingAndConfig.dbo.FavoriteReport WHERE DWStagingAndConfig.dbo.FavoriteReport.FavoriteReportName='Имя_отчёта_вызывающего_ошибку'
Находим в результатах поле FavoriteReportId и выполняем следующий запрос:
DELETE FROM DWStagingAndConfig.dbo.FavoriteReport WHERE DWStagingAndConfig.dbo.FavoriteReport.FavoriteReportId=' FavoriteReportId_отчёта_вызывающего_ошибку';
Обновляем закладку избранные отчёты (F5): отчёт вызывающий ошибку исчез.
Ну и создавать короткие русскоязычные имена для отчётов. Кстати, подобных проблема с англ. языком я так и не заметил.
-
Помечено в качестве ответа
Vitalishe
8 декабря 2011 г. 9:57 -
Изменено
Vitalishe
8 декабря 2011 г. 12:14
-
Помечено в качестве ответа
Как видно из названия, я получаю:
Недопустимая длина для массива Base-64.
Я читал об этой проблеме здесь, и кажется, что предложение состоит в том, чтобы сохранить ViewState в SQL, если он большой. Я использую мастер с большим количеством сбора данных, поэтому мои ViewState велики. Но, прежде чем я перейду к решению «store-in-DB», может кто-нибудь взглянет и скажет, есть ли у меня другие варианты?
Я создаю письмо для доставки, используя следующий метод:
public void SendEmailAddressVerificationEmail(string userName, string to)
{
string msg = "Please click on the link below or paste it into a browser to verify your email account.<BR><BR>" +
"<a href="" + _configuration.RootURL + "Accounts/VerifyEmail.aspx?a=" +
userName.Encrypt("verify") + "">" +
_configuration.RootURL + "Accounts/VerifyEmail.aspx?a=" +
userName.Encrypt("verify") + "</a>";
SendEmail(to, "", "", "Account created! Email verification required.", msg);
}
Метод Encrypt выглядит следующим образом:
public static string Encrypt(string clearText, string Password)
{
byte[] clearBytes = System.Text.Encoding.Unicode.GetBytes(clearText);
PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
byte[] encryptedData = Encrypt(clearBytes, pdb.GetBytes(32), pdb.GetBytes(16));
return Convert.ToBase64String(encryptedData);
}
Вот как выглядит HTML в hotmail:
Пожалуйста, нажмите на ссылку ниже или вставьте ее в браузер, чтобы подтвердить свою учетную запись электронной почты.
HTTP://локальный: 1563/Счета /VerifyEmail.aspx а = YOHY57xYRENEOu3H + FGq1Rf09AZAI56EPjfwuK8XWKg =
На принимающей стороне страница VerifyEmail.aspx.cs имеет строку:
string username = Cryptography.Decrypt(_webContext.UserNameToVerify, "verify");
Вот метод получения для UserNameToVerify:
public string UserNameToVerify
{
get
{
return GetQueryStringValue("a").ToString();
}
}
А вот и метод GetQueryStringValue:
private static string GetQueryStringValue(string key)
{
return HttpContext.Current.Request.QueryString.Get(key);
}
И метод расшифровки выглядит так:
public static string Decrypt(string cipherText, string password)
{
**// THE ERROR IS THROWN HERE!!**
byte[] cipherBytes = Convert.FromBase64String(cipherText);
Можно ли исправить эту ошибку исправлением кода или я должен сохранить ViewState в базе данных?
Ответ 1
Длина строки в кодировке base64 всегда кратна 4. Если она не кратна 4, то символы =
добавляются до тех пор, пока это не произойдет. Строка запроса в форме ?name=value
имеет проблемы, когда value
содержит =
charaters (некоторые из них будут отброшены, я не помню точное поведение). Возможно, вам удастся добавить правильное количество символов =
перед выполнением декодирования base64.
Редактировать 1
Вы можете обнаружить, что значение UserNameToVerify
изменилось на " "
"+"
на " "
поэтому вам может потребоваться сделать что-то вроде этого:
a = a.Replace(" ", "+");
Это должно получить правильную длину;
int mod4 = a.Length % 4;
if (mod4 > 0 )
{
a += new string('=', 4 - mod4);
}
Конечно, вызов UrlEncode
(как в ответе LukeH) должен сделать все это спорным.
Ответ 2
Моя догадка заключается в том, что вам просто нужно URL-кодировать вашу строку Base64, когда вы включаете ее в строку запроса.
В кодировке Base64 используются некоторые символы, которые должны быть закодированы, если они являются частью запроса (а именно +
и /
, а может быть и =
). Если строка неправильно закодирована, вы не сможете успешно декодировать ее на другом конце, следовательно, ошибки.
Вы можете использовать метод HttpUtility.UrlEncode
для кодирования строки Base64:
string msg = "Please click on the link below or paste it into a browser "
+ "to verify your email account.<br /><br /><a href=""
+ _configuration.RootURL + "Accounts/VerifyEmail.aspx?a="
+ HttpUtility.UrlEncode(userName.Encrypt("verify")) + "">"
+ _configuration.RootURL + "Accounts/VerifyEmail.aspx?a="
+ HttpUtility.UrlEncode(userName.Encrypt("verify")) + "</a>";
Ответ 3
Я не достаточно авторитет, чтобы продвигать или комментировать, но ответ LukeH был для меня интересным.
Поскольку шифрование AES является стандартным для использования сейчас, оно создает строку base64 (по крайней мере, все реализации шифрования/расшифровки, которые я видел). Эта строка имеет длину в кратных 4 (string.length% 4 = 0)
Строки, которые я содержал + и = в начале или конце, и когда вы просто связываете это с запросом URL-адреса, он будет выглядеть правильно (например, в созданном вами письме), но когда ссылка и страница .NET получает его и помещает в this.Page.Request.QueryString, эти специальные символы исчезнут, а длина строки не будет в несколько раз.
В качестве специальных символов в FRONT строки (ex: +), а также = в конце, вы не можете просто добавить some =, чтобы изменить разницу, поскольку вы изменяете текст cypher в который не соответствует тому, что было на самом деле в исходном запросе.
Таким образом, обтекание cypher-текстом с помощью HttpUtility.URLEncode(а не HtmlEncode) преобразует не-буквенно-цифровые символы таким образом, чтобы гарантировать, что .NET проверит их обратно в исходное состояние, когда оно будет проиндексировано в коллекцию запросов.
Хорошо, нам нужно всего лишь сделать URLEncode при создании запроса для URL-адреса. На входящей стороне он автоматически переводится обратно в исходное строковое значение.
Вот пример кода
string cryptostring = MyAESEncrypt(MySecretString);
string URL = WebFunctions.ToAbsoluteUrl("~/ResetPassword.aspx?RPC=" + HttpUtility.UrlEncode(cryptostring));
Ответ 4
Моим первоначальным предположением, не зная данных, было бы то, что UserNameToVerify не кратно 4 в длину. Проверьте FromBase64String на MSDN.
// Ok
byte[] b1 = Convert.FromBase64String("CoolDude");
// Exception
byte[] b2 = Convert.FromBase64String("MyMan");
Ответ 5
Зашифрованная строка содержит два специальных символа +
и =
.
Знак «+» давал ошибку, поэтому нижеприведенное решение работало хорошо:
//replace + sign
encryted_string = encryted_string.Replace("+", "%2b");
//'%2b' is HTTP encoded string for **+** sign
ИЛИ ЖЕ
//encode special charactes
encryted_string = HttpUtility.UrlEncode(encryted_string);
//then pass it to the decryption process
...