byre_vestnik |
|
Статус: Участник Группы: Участники
|
При попытке усовершенствовать или создать cades-подпись в Linux Ubuntu 18.04 возникает ошибка 0xC2100100 «При попытке отправки запроса возникла ошибка HTTP». Информация из системного лога: Цитата: Oct 11 09:48:58 dev-m dotnet: <capi20>CryptMsgGetParam!() Exception :’Error 0xea.’ at file:’../../../CSPbuild/CSP/capilite/CMSMessage.h’ line:242 Почему может возникать эта ошибка? |
|
|
Александр Лавник |
|
Статус: Сотрудник Группы: Участники Сказал «Спасибо»: 53 раз |
Здравствуйте. Какой адрес TSP службы используется? Компьютер подключен к Интернету через прокси-сервер или напрямую? |
Техническую поддержку оказываем тут |
|
|
|
byre_vestnik |
|
Статус: Участник Группы: Участники
|
Используется тестовый TSP КриптоПро: «http://testca2012.cryptopro.ru/tsp/tsp.srf» Опять же, под Windows никаких проблем при работе с этой службой не возникает. Машина подключена к интернету напрямую. Отредактировано пользователем 12 октября 2021 г. 11:47:16(UTC) |
|
|
Александр Лавник |
|
Статус: Сотрудник Группы: Участники Сказал «Спасибо»: 53 раз |
Автор: byre_vestnik Используется тестовый TSP КриптоПро: «http://testca2012.cryptopro.ru/tsp/tsp.srf» Опять же, под Windows никаких проблем при работе с этой службой не возникает. Машина подключена к интернету напрямую. Попробуйте собрать лог с настройками, как описано в теме, и приложите его. |
Техническую поддержку оказываем тут |
|
|
|
byre_vestnik |
|
Статус: Участник Группы: Участники
|
Я его привел в первом сообщении. |
|
|
byre_vestnik |
|
Статус: Участник Группы: Участники
|
При попытке усовершенствовать подпись также возникает ошибка HTTP 456: Цитата: Oct 11 11:49:01 dev-m dotnet: <cades>Enhance Expression FAILED: ::CadesMsgEnhanceSignatureAll( msg.GetHandle(), pEnhancePara->pCadesSignPara) |
|
|
Александр Лавник |
|
Статус: Сотрудник Группы: Участники Сказал «Спасибо»: 53 раз |
Получите на этом компьютере с Ubuntu штамп времени с указанием того же адреса TSP службы с помощью утилиты tsputil: Код:
(где /tmp/file — произвольный файл) и приложите полученный лог. |
Техническую поддержку оказываем тут |
|
|
|
byre_vestnik |
|
Статус: Участник Группы: Участники
|
Ответ в терминале: Код:
Логи во вложении. logs.txt (47kb) загружен 6 раз(а). Отредактировано пользователем 12 октября 2021 г. 12:59:24(UTC) |
|
|
byre_vestnik |
|
Статус: Участник Группы: Участники
|
Добрый день. |
|
|
Александр Лавник |
|
Статус: Сотрудник Группы: Участники Сказал «Спасибо»: 53 раз |
Автор: byre_vestnik Добрый день. Здравствуйте. Попробуйте усовершенствовать/создать подпись с использованием другой службы штампов времени. Если ошибка повторится, то приложите часть кода, при исполнении которого воспроизводится ошибка. |
Техническую поддержку оказываем тут |
|
|
|
Пользователи, просматривающие эту тему |
Guest |
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Decaz |
|
Статус: Новичок Группы: Участники
|
1. Windows 7 На машине используется прокси-сервер. На другой машине, не использующей прокси-сервер, все работает замечательно. Очень странной является строка: Цитата: 00000121 3.84780288 [15428] tspcli.dll: {15424} /CryptoPro::PKI::TSP::Client::CRequest::Send/ TSPRequest.cpp(161) : HTTP STATUS: 400 Ранее ошибка была HTTP STATUS: 407, однако была настроена локальная групповая политика для прокси-сервера. Теперь же это HTTP STATUS: 400. Подскажите, в чем может быть дело? Надо ли дополнительно что-то настраивать? |
|
|
Decaz |
|
Статус: Новичок Группы: Участники
|
Проблема заключалась в неправильной настройке прокси-сервера в локальной групповой политике. Закройте, пожалуйста, тему. |
|
|
ac_dc |
|
Статус: Новичок Группы: Участники
|
Автор: Decaz Проблема заключалась в неправильной настройке прокси-сервера в локальной групповой политике. Закройте, пожалуйста, тему. Добрый день, |
|
|
Decaz |
|
Статус: Новичок Группы: Участники
|
Автор: ac_dc Пробовали прописывать параметр в групповой политике адрес прокси сервера по умолчанию Сделал ровно то же самое, все заработало. Возможно вы указываете некорректные значения или указываете их не в тех параметрах, в которых надо. |
|
|
BiSerge |
|
Статус: Новичок Группы: Участники
|
Добрый день. 1. Windows 7 Пару дне назад при подписании документов появилось сообщение с требованием обновить КриптоПро ЭЦП Browser plug, обновил и теперь при попытке подписать документ, получаю ошибку – «Ошибка при формировании ЭП: При попытке отправки запроса возникла ошибка HTTP (0xC2100100)». Работаем через прокси. До обновления плагина все работало. |
|
|
Пользователи, просматривающие эту тему |
Guest |
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Коды ошибок
Коды ошибок библиотеки tspcli
Код ошибки | Описаниие |
---|---|
0xC2100100 | При попытке отправки запроса возникла ошибка HTTP |
0xC2100101 | Указанный тип аутентификации запрещен групповой политикой |
0xC2100102 | Указанный тип аутентификации прокси-сервера запрещен групповой политикой |
0xC2100103 | Указанная служба штампов запрещена групповой политикой |
0xC2100104 | Использование поля Nonce запрещено групповой политикой |
0xC2100110 | Указанный алгоритм хэширования запрещен групповой политикой |
0xC2100111 | Указанный «PolicyID» запрещен групповой политикой |
0xC2100120 | Значение полей «Nonce» запроса и штампа не совпадают |
0xC2100121 | Не задан адрес службы штампов времени |
0xC2100122 | Штамп времени просрочен (выдан слишком давно) |
0xC2100123 | В запросе отсутствует хэш-значение |
0xC2100124 | Получен ответ службы штампов времени с ошибкой |
0xC2100140 | Лицензия на КриптоПро TSP Client истекла или не была введена |
Коды ошибок библиотеки ocspcli
Код ошибки | Описаниие |
---|---|
0xC2110100 | При попытке отправки запроса возникла ошибка HTTP |
0xC2110101 | Указанный тип аутентификации запрещен групповой политикой |
0xC2110102 | Указанный тип аутентификации прокси-сервера запрещен групповой политикой |
0xC2110103 | Указанная служба OCSP запрещена групповой политикой |
0xC2110104 | Встречено расширение (AcceptableTypes или Nonce), запрещенное групповой политикой |
0xC2110110 | Подписанные OCSP-запросы запрещены политикой |
0xC2110111 | Неподписанные OCSP-запросы запрещены политикой |
0xC2110120 | Поля «Nonce» OCSP-запроса и ответа не совпадают |
0xC2110121 | Не задан адрес службы OCSP |
0xC2110122 | OCSP-ответ просрочен по значению поля «ProducedAt» или «NextUpdate» |
0xC2110123 | Значение поля «ThisUpdate» OCSP-ответа просрочено |
0xC2110124 | Значение поля «NextUpdate» OCSP-ответа меньше значения «ThisUpdate» |
0xC2110125 | В OCSP-ответе не найден запрашиваемый статус сертификата |
0xC2110126 | Сертификат отозван |
0xC2110127 | Статус сертификата не известен |
0xC2110128 | Получен OCSP-ответ с ошибкой |
0xC2110129 | Полученный OCSP-ответ содержит неизвестное критическое расширение |
0xC2110130 | Время Службы OCSP рассинхронизировано со Службой штампов времени |
0xC2110140 | Лицензия на КриптоПро OCSP Client (Revocation Provider) истекла или не была введена |
Http error occurred while sending request 0xc2100100
Типовые ошибки при формировании подписи в веб-интерфейсе сервиса подписи.
1.1. Размер переданного файла превышает максимально допустимый размер
1.2. Неперехваченное исключение: Код состояния ответа не указывает на успешное выполнение: 413 (Request entity too large)
Возможные причины возникновения ошибки:
На подпись был передан документ, чей размер превышает заданный в настройках сервисов DSS.
Рекомендуемое решение:
Изменить значения для максимальных размеров документов сервисов DSS, в соответствие с руководством.
2. Неперехваченное исключение: Message: invalid_certificate MessageDetail: Сертификат не найден или недействителен
Диагностика:
Ошибка в «Журналы приложений и служб -> CryptoPro-> DSS-> SignServer-> Admins».
Пример:
Instance Unique Identifier: 1/signserver Source: SignDocumentRequestValidator Message: SignDocumentRequestValidator. Ошибка: invalid_certificate;
Описание: Сертификат не найден или недействителен.;
Возможные причины возникновения ошибки:
— Ошибка при проверке сертификата подписанта на сервере DSS;
— Сертификат подписанта был отозван/приостановлен.
Рекомендуемое решение:
— Обеспечить проверку сертификата подписанта на сервере DSS (путем установки цепочки сертификатов издателей в хранилище локального компьютера сервера DSS);
— Обеспечить проверку сертификата подписанта на сервере DSS на отзыв (путем установки CRL в хранилище «Промежуточные центры сертификации» локального компьютера сервера DSS или обеспечив доступность CRL по ссылкам, указанным в расширении «Точки распространения списков отзыва» сертификата подписанта и цепочки сертификатов издателей);
— Убедиться, что сертификат подписанта не был отозван/приостановлен.
3. При формировании подписи формата CAdES T/XLT1 возвращается ошибка «Произошла ошибка при получении штампа времени. Ошибка: [При попытке отправки запроса возникла ошибка HTTP]. Код: [0xc2100100]»
Возможные причины возникновения ошибки:
С сервера DSS нет сетевой доступности до службы штампов времени (TSP), выбранной при формировании подписи.
Рекомендуемое решение:
Обеспечить сетевую доступность до службы штампов времени с сервера DSS. Затем проверить работоспособность службы, в соответствие с п. 7.2 «ЖТЯИ.00094-01 91 02 Службы УЦ 2.0. КриптоПро TSP Server. Руководство администратора».
4. При формировании подписи формата CAdES XLT1 возвращается ошибка «Произошла ошибка при получении OCSP-ответа. Ошибка: [При попытке отправки запроса возникла ошибка HTTP]. Код: [0xc2110100]»
Возможные причины возникновения ошибки:
С сервера DSS нет сетевой доступности до службы проверки статусов сертификатов (OCSP), адрес которой указан в расширении «Доступ к информации о центрах сертификации» сертификата подписанта.
Рекомендуемое решение:
Обеспечить сетевую доступность до службы проверки статусов сертификатов. Затем проверить работоспособность службы, в соответствие с п. 7.3 «ЖТЯИ.00094-01 91 01 Службы УЦ 2.0. КриптоПро OCSP Server. Руководство администратора».
5. При формировании подписи формата CAdES T/XLT1 возвращается ошибка «Произошла ошибка при формировании CAdES подписи. Ошибка: [Группа или ресурс не находятся в нужном состоянии для выполнения требуемой операции]. Код: [0x8007139f]»
Возможные причины возникновения ошибки:
Остановлена служба штампов времени (TSP)/проверки статусов сертификатов (OCSP).
Рекомендуемое решение:
Запустить службы на стороне сервера «КриптоПро Службы УЦ». Затем проверить работоспособность службы штампов времени, в соответствие с п. 7.2 «ЖТЯИ.00094-01 91 02 Службы УЦ 2.0. КриптоПро TSP Server. Руководство администратора» и работоспособность службы проверки статусов сертификатов, в соответствие с п. 7.3 «ЖТЯИ.00094-01 91 01 Службы УЦ 2.0. КриптоПро OCSP Server. Руководство администратора».
6. При загрузке документа для подписи возвращается ошибка «Message: Authorization has been denied for this request«
Диагностика:
Ошибки в «Журналы приложений и служб -> CryptoPro-> DSS-> DocumentStore-> Admins».
А) Неавторизованный доступ по пути [https://testdss/documentstore/api/documents]: Недостаточно прав у пользователя []
Б) Instance Unique Identifier: 1/documentstore] Source: Microsoft.Owin.Security.OAuth.OAuthBearerAuthenticationMiddleware Message: Authentication failed
System.IdentityModel.Tokens.SecurityTokenSignatureKeyNotFoundException: IDX10505: Unable to validate signature. The ‘Delegate’ specified on TokenValidationParameters, returned a null SecurityKey.
Возможные причины возникновения ошибки:
— На сервисе обработки документов не настроены отношения доверия с центром идентификации;
— Истек срок действия сервисного сертификата сервиса обработки документов.
Рекомендуемое решение:
— Запросить отпечаток сервисного сертификата ЦИ: $idp_cert = (Get-DssStsProperties).ServiceCertificate
— Указать отпечаток сервисного сертификата ЦИ на сервисе обработки документов: Add-DssDocumentStoreClaimsProviderTrust -IssuerName realsts -Thumbprint $idp_cert
Примечание: если при выполнении второго командлета в Powershell возникла ошибка «Доверенный издатель с именем realsts уже добавлен в коллекцию» — необходимо выполнить командлет: Set-DssDocumentStoreClaimsProviderTrust -IssuerName realsts -NewThumbprint $idp_cert
— Проверить срок действия сервисного сертификата сервиса обработки документов. Если срок действия истек — необходимо перевыпустить его и скорректировать настройки в соответствие с руководством;
— Перезагрузить пулы приложений центра идентификации и сервиса обработки документов, выполнив командлеты: Restart-DssStsInstance и Restart-DssDocumentStoreInstance.
7. При загрузке документа для подписи возвращается ошибка «Неперехваченное исключение: Message: An error has occured»
Диагностика:
Ошибка в «Журналы приложений и служб -> CryptoPro-> DSS-> SignServer-> Admins».
Пример:
Instance Unique Identifier: 1/signserver Source: Signature Message: Message: Authorization has been denied for this request.
CryptoPro.DSS.Common.Clients.Rest.DssClientException: Message: Authorization has been denied for this request.
Возможные причины возникновения ошибки:
— На сервисе обработки документов не настроены отношения доверия с сервисом подписи;
— Истек срок действия сервисного сертификата сервиса обработки документов.
Рекомендуемое решение:
— Запросить отпечаток сервисного сертификата сервиса подписи: $ss_cert = (Get-DssProperties).ServiceCertificate
— Указать отпечаток сервисного сертификата сервиса подписи в настройках сервиса обработки документов: Add-DssDocumentStoreClaimsProviderTrust -IssuerName signserver -Thumbprint $ss_cert
Примечание: если при выполнении второго командлета в Powershell возникла ошибка «Доверенный издатель с именем signserver уже добавлен в коллекцию» — необходимо выполнить командлет: Set-DssDocumentStoreClaimsProviderTrust -IssuerName signserver -NewThumbprint $ss_cert
— Проверить срок действия сервисного сертификата сервиса обработки документов. Если срок действия истек — необходимо перевыпустить его и скорректировать настройки в соответствие с руководством;
— Перезагрузить пулы приложений сервиса подписи и сервиса обработки документов, выполнив командлеты: Restart-DssSignServerInstance и Restart-DssDocumentStoreInstance.
Источник
Исправление ошибки подписания документов ЭЦП, выпущенной УЦ Taxcom
Т.к. ЭЦП применяется и в конфигурациях на платформе 1С, решил тут опубликовать небольшую заметку, чтобы облегчить людям жизнь.
Клиент столкнулся с проблемой подписания документов на портале ДО.
— КриптоПро. Ошибка. Не удалось создать подпись из-за ошибки: Время ожидания операции истекло(0x80072EE2)
— HTTP error occurred during sending request (0xC2110100)
По первому коду — ничего вразумительного найти не удалось, по второму — вышел на форум КриптоПро — https://www.cryptopro.ru/forum2/default.aspx?g=posts&t=11404
В свойствах сертификата находим поле OCSP сервера, вбиваем его в браузер и проверяем доступность.
При открытии данного URL в браузере на сервере клиента ничего не происходит — сервер не отвечает.
Ответа тоже нет.
Проверка с другого IP проходит: сервер отдаёт файл, телнет подключается.
Следовательно, делаем вывод о том, что блокировка происходит либо по вине провайдера, либо по вине Такскома.
Звоним в Техподдержку Taxcom — сообщаем свой IP, уточняем проблему, удостоверяемся, что IP находится в чёрном списке, и просим разблокировать.
Через 20 минут подписание документов работает без ошибок.
Специальные предложения
Обновление 28.07.22 07:30
См. также
Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions Промо
«Я не могу просто взять и скопировать код с гитхаба», «у нас 1С микросервисами окружена», «возможностей мало» — частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще — берём и используем.
28.12.2020 12115 comol 31
Новый SimpleWEB – тот же Simple, теперь еще web
Представляю новый отдельный проект на старой семантике – фремйворк для создания веб приложений. Для разработчика симпла ничего не меняется – все тот же стек разработки, тот же конфигуратор и принципы разработки, но конфигурации теперь можно запускать не только на Андроид, но и в виде веб – приложений. Т.е. теперь платформы две – мобильная и веб, в два раза больше поводов перейти на этот стек разработки. Проект пока на стадии альфы, но развивается.
19.12.2022 1966 informa1555 9
Как убрать /hs/ и имя виртуального каталога из URL для http-сервиса (IIS)
Переписывание входящего user-friendly URL (без hs) для понимания его http-сервисом 1С.
05.12.2022 579 kludgedCHPMK 4
Реализация нестандартных (для 1С) интерфейсных решений в Web-клиенте
Онлайн-сервисы, построенные на 1С, могут использовать все многообразие веб-технологий. О том, как спроектировать, реализовать и красиво оформить интерфейс продукта 1С, в докладе на конференции Infostart Event 2021 Post-Apocalypse рассказал CTO компании WiseAdvice Олег Филиппов.
21.10.2022 5411 comol 14
.Net в 1С. На примере использования HTTPClient, AngleSharp. Удобный парсинг сайтов с помощью библиотеки AngleSharp, в том числе с авторизацией аля JQuery с использованием CSS селекторов. Динамическая компиляция Промо
Часто приходится парсить сайты, в том числе с авторизацией, перескакивая со страницы на страницу по ссылкам. Тот, кто занимался вэб программированием, знает, как удобно использовать JQuery и CSS селекторы. На .Net написана очень удобная библиотека AngleSharp. Я покажу, как с её помощью можно значительно облегчить себе труд.
10.03.2016 70497 Serginio 33
Верстка главной страницы Infostart на tailwind
Сверстал главную страницу infostart на framework tailwind css.
08.09.2022 2574 John_d 21
Добавление собственного виджета в 1С:Документооборот версии 3.0
В данной публикации я хочу описать процесс добавления собственного виджета для отслеживания задач по видам документов в 1С документооборот версии 3.0.
18.07.2022 1919 ArseniyFenix 2
[БСП] Выводим qr-код в печатную форму счета для оплаты в мобильном приложении банка или платежном терминале
Используя БСП выведем qr-код в печатную форму счета.
29.06.2022 3109 John_d 7
Распределение расходов пропорционально продажам Промо
Финансовая модель. Распределение административных расходов по подразделениям пропорционально продажам за месяц. Дополнительные реквизиты против бизнес-процессов!
13.05.2018 19913 RustIG 9
Еще раз о дополнительных реквизитах и дополнительных сведениях
Дополнительные реквизиты и сведения существуют давно. Задумка очень хорошая. Суть этих механизмов понятна всем. По этому поводу написано много. Что тут можно сказать нового? Однако бес, как всегда, в деталях. Как создавали реквизиты в объектах типовых конфигураций, так и продолжаем это делать. Почему это происходит? За всех сказать не могу. Могу рассуждать только на своем примере. Являясь убежденным практиком, одно могу сказать вполне определенно. Если что-то на практике недостаточно удобно, то останется оно главным образом в теории. Если не приложить немного усилий.
11.05.2022 6856 user1374747 17
Допиливаем типовой отчет «Связанные документы» (структура подчиненности) так, чтобы он видел документы из расширения конфигурации
Наконец-то мы перешли на платформу 1С 8.3.20 и смогли отказаться от режима совместимости в 1С ЕРП. Это позволило нам окончательно закрыть вопрос о перемещении ВСЕХ добавленных объектов из самой конфигурации в её расширение. Одним из камней преткновения на пути к переезду, был вопрос работы типового отчета «связанные документы». Ну что же, давайте вместе его решим.
02.05.2022 7204 dima_home 66
Пример доработки проведения в ERP 2.5 по одному регистру накопления
В дополнение к публикации № 1343740 показан быстрый способ встраивания в механизмы конфигурации проведения существующего документа «ПриобретениеТоваровУслуг» по добавленному новому регистру накопления «АТХ_ПартииНоменклатурыДляРемонтовТверь_НД». Пример реализован на 1С:ERP Управление предприятием 2 (2.5.7.390).
27.04.2022 1590 vsasav 5
Online телефонный справочник из 1С: Зарплата и управление персоналом Промо
В интернете представлено много реализаций online телефонных справочников организаций. Есть справочники, которые использует для хранения информации базу Active Directory (LDAP), есть справочники, которые реализованы с использованием СУБД (например, MySQL). Но я не нашел справочника, который использует информацию из базы 1С. Далее я рассмотрю данную разработку.
10.03.2017 28579 ruha 21
Спецификация OpenRPC
Спецификация OpenRPC определяет стандартное, независимое от языка программирования описание интерфейса для API-интерфейсов JSON-RPC 2.0. Перевод общей информации и спецификации с официального сайта https://open-rpc.org/
18.04.2022 977 malikov_pro 0
От реляционной базы данных к единой таблице DynamoDB: пошаговое исследование
Просто потому, что это NoSQL, это не значит, что он нереляционный. Перевод статьи по DynamoDB, которую можно применить для Yandex Database.
10.03.2022 943 malikov_pro 0
Запуск FastAPI (Python) на Yandex Cloud Functions и Yandex Database
Описание прототипа для запуска HTTP API сервиса на serverless технологии с применением фреймворка.
10.03.2022 2772 malikov_pro 2
Исправление ошибок в типовых релизах 1С: УТ 10.3 и Розница 1.0 при отражении продаж в ЕГАИС Промо
При продаже алкогольной продукции в программах Управление торговлей и Розница возникают ошибки. В статье разберем причины ошибок и способ их решения.
05.06.2016 43444 @lexandr 21
Что, Почему и Когда в дизайне с одной таблицей с помощью DynamoDB
Перевод статьи по DynamoDB, которую можно применить для Yandex Database.
10.03.2022 693 malikov_pro 0
Как моделировать отношения «один ко многим» в DynamoDB
Перевод статьи по DynamoDB, которую можно применить для Yandex Database.
10.03.2022 815 malikov_pro 11
Работа с 1С через протокол OData
В данной статье мы будем рассматривать работу с данными информационной базы через протокол OData (далее OData).
17.12.2021 23226 ProgrammingStore 22
Стандартные доработки. Штрихкодирование документов. Промо
Эта статья описывает процесс доработки типовых 1С конфигураций, для добавления функционала штрихкодирования документов и быстрого их поиска по штрихкоду. Метод работает для управляемых и неуправляемых печатных форм.
14.12.2010 72315 milkers 63
Подключение к HTTP-сервису с авторизацией посредством передачи клиентского SSL-сертификата
В статье хочу поделиться опытом настройки подключения 1С к стороннему HTTP-сервису, использующему авторизацию посредством передачи клиентского SSL-сертификата.
07.12.2021 9003 kholkin 12
Web консоль управления сеансами 1С
Мы дали ему название adm1c, он позволяет посредством веб доступа удалять или смотреть на сеансы в 1С базах и при необходимости удалять их. Да и что тут такого, сказали бы, есть же консоль на win, с нее же это можно делать, и все верно, но есть пара но.
26.11.2021 2976 4ernuy 16
Безголовая (Headless) архитектура построения eCommerce
Обобщение материалов по безголовой архитектуре построения eCommerce.
10.11.2021 1390 malikov_pro 9
Выборочное списание партий товаров в «Управление торговлей» редакции 10 Промо
Реализация выборочного списания партий товаров в «Управление торговлей» редакции 10
01.10.2011 47591 GreenLab 35
Понимание схемы JSON (JSON Schema), часть 2
Перевод книги https://json-schema.org/understanding-json-schema/
09.11.2021 5039 malikov_pro 0
Примеры тестовых сценариев Postman
Перевод статьи https://learning.postman.com/docs/writing-scripts/script-references/test-examples/
08.11.2021 23899 malikov_pro 0
Тонкости и подводные камни работы типового модуля интеграции Битрикс24 и 1С
Цель статьи — указать на подводные камни и нюансы, о которых “не пишут на заборах” и которые встретились мне за время внедрения типового модуля интеграции 1С и Битрикс24. Будет интересна для людей, кто подумывает о том, чтобы настроить интеграцию, и хотят понять, с чем столкнутся. А также для тех, кто уже работает с подобным обменом, столкнулся с какими-то из описанных ситуаций и хочет понять, что пошло не так и “как жить дальше”. Постараюсь все описать “человеческим” языком с минимальной долей терминов, так как статья, надеюсь, будет полезна не только программистам.
07.11.2021 9156 freegman74 13
Кэширование COM-соединения. Три способа Промо
Статья о трех способах кэширования COM-соединения в 1С:Предприятии 8.x.
11.04.2013 44485 Infostart 42
Окей, Google
Пример интеграции Google Ассистента с 1С. В основе которого лежит платформа Dialogflow CX для понимания естественного языка.
28.10.2021 1963 Soloist 6
Спецификация JSON:API 1.0
Перевод спецификации https://jsonapi.org/format/
28.10.2021 4833 malikov_pro 4
Как сделать сотрудникам детей
За этим провокационным заголовком скрывается небольшая задача, которая, однако, вызвала некоторую дискуссию в кулуарах на последней конференции. Как хранить список детей сотрудников — в табличной части справочника или в регистре сведений?
28.10.2021 3637 Alxby 50
Заготовка для загрузки файлов по ftp Промо
3 процедуры и 1 макет
03.06.2013 32119 anig99 6
Повышение производительности веб-сервисов. Переиспользование сеансов
Повышение производительности веб-сервисов. Переиспользование сеансов. Практическая реализация.
20.10.2021 4140 sorter1 2
Когда интерфейсам 1С нужны веб-технологии
Есть несколько способов сделать интерфейс в 1С богаче и оптимальнее с помощью веб-технологий. О том, какие практические приемы помогут в этой задаче, на митапе «Интерфейс в 1С» рассказали руководители разработки в компании «Арбис» Матвей Серегин и Анна Гнатюк.
15.10.2021 4980 Akcium 11
WEB/HTTP сервисы. Базовые отличия и применение на практике
Рассказываем о WEB и HTTP сервисах, их практическом применении, о шишках, которые мы набили, и о выводах, которые сделали. Спойлер: тех, кто дочитает статью до конца, ждет бонус от автора.
04.10.2021 22662 Neti 18
Бесплатный GPS-трекинг Промо
Современные технологии и возможности становятся все более доступными для широких масс и повсеместно используемыми, как для частного лица, так и для мелкого и среднего бизнеса. Так и GPS-трекинг (отслеживание в реальном времени на карте местоположения водителей, курьеров, монтажных бригад, торговых представителей, детей, собак и т.п., а также просмотр статистики по их передвижениям и остановкам), становится сейчас все более востребованным сервисом, как для домашних условий, так и для предприятия. И, если крупные фирмы (например, транспортные предприятия) подписав договора с коммерческими сервисами, оплачивая своевременно счета за устройства и абонплату, эту проблему для себя решили, то это скорее подходит для крупных корпоративных клиентов. Что делать нам, простым смертным или небольшой фирме с несколькими водителями, например? Какие есть простые, надежные и недорогие решения?
Источник
Grpc.Core.RpcException: Status(StatusCode="Internal", Detail="Error starting gRPC call. HttpRequestException: An error occurred while sending the request. IOException: The request was aborted. Http2ConnectionException: The HTTP/2 server sent invalid data on the connection. HTTP/2 error code 'PROTOCOL_ERROR' (0x1).", DebugException="System.Net.Http.HttpRequestException: An error occurred while sending the request.
---> System.IO.IOException: The request was aborted.
---> System.Net.Http.Http2ConnectionException: The HTTP/2 server sent invalid data on the connection. HTTP/2 error code 'PROTOCOL_ERROR' (0x1).
at System.Net.Http.Http2Connection.ReadFrameAsync(Boolean initialFrame)
at System.Net.Http.Http2Connection.ProcessIncomingFramesAsync()
--- End of inner exception stack trace ---
at System.Net.Http.Http2Connection.Http2Stream.CheckResponseBodyState()
at System.Net.Http.Http2Connection.Http2Stream.TryEnsureHeaders()
at System.Net.Http.Http2Connection.Http2Stream.ReadResponseHeadersAsync(CancellationToken cancellationToken)
at System.Net.Http.Http2Connection.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.Http2Connection.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at Grpc.Net.Client.Internal.GrpcCall`2.RunCall(HttpRequestMessage request, Nullable`1 timeout)")
at API.Controllers.WeatherForecastController.GetToken(UserDetails aUserDetails) in C:DotNetCoreFramework -DBAgnosticTestAPIControllersWeatherForecastController.cs:line 80
at lambda_method(Closure , Object , Object[] )
at Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute(Object target, Object[] parameters)
at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.SyncObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()
--- End of stack trace from previous location where exception was thrown ---
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
--- End of stack trace from previous location where exception was thrown ---
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|24_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted).
public UserDetails GetToken(UserDetails aUserDetails)
{
try
{
AppContext.SetSwitch(
"System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
using GrpcChannel channel1 = Grpc.Net.Client.GrpcChannel.ForAddress("http://localhost:5009/");
var client1 = new Greeter.GreeterClient(channel1);
UserDetails lUserDetails = client1.GetToken(aUserDetails);
return lUserDetails;
}catch(Exception ex)
{
throw ex;
}
}```
port no in Grpc Service and client is same.
Я использую консольное приложение для выполнения объемных тестов, в этих тестах я вызываю маршрут JobTitles, который я создал внутри API, в данном случае контроллер, который обрабатывает этот маршрут.
Для функции Post, которую я использую, я использовал метод HttpClient PostAsJsonAsync()
. Поскольку я уже использовал эту функцию в другом коде, у меня не было особых проблем, но теперь она возвращает исключение System.Net.Http.HttpRequestException: An error occurred while sending the request.
Я не использую вызов .Result
, поскольку он может привести к тупиковой ситуации; Я также пробовал использовать .ConfigureAwait (false)
, но это не сработало. Я также пробовал работать с Easy.Common RestClient (), но возникает та же ошибка, у меня заканчиваются варианты того, в чем может быть ошибка. Извините, но я не могу понять, что это за ошибка, просто взглянув на трассировку стека, я все еще не научился, как это выяснить.
Я поместил здесь код для лучшего просмотра, так как он немного большой:
https://repl.it/repls/JubilantMoccasinArrays
Я попытался создать общий метод, поскольку в другом коде я сделал сообщение для каждой сущности, воспользовавшись этим вопросом, я хотел бы знать, есть ли еще один, кроме RestClient и HttpClient, который я мог бы использовать для отправки нескольких вызовов, не вызывая поставки должны быть отменены из-за большого количества записей API, поскольку он автоматически отменяется, чтобы избежать DDoS.
И трассировка стека, которую я получаю от RestClient:
Unhandled exception. System.Net.Http.HttpRequestException: An error occurred while sending the request.
---> System.IO.IOException: The response ended prematurely.
at System.Net.Http.HttpConnection.FillAsync()
at System.Net.Http.HttpConnection.ReadNextResponseHeaderLineAsync(Boolean foldedHeadersAllowed)
at System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage request, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.SendWithNtConnectionAuthAsync(HttpConnection connection, HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
at CodenApp.Studio2Me.VolumeTest.UsefulFunctions.HTTPFunctions`1.Post(String route, T content) in C:UsersYasmin KrugerDocumentsStudio2MeStudio2MeTestsCodenApp.Studio2Me.VolumeTestUsefulFunctionsHTTPFunctions.cs:line 29
at CodenApp.Studio2Me.VolumeTest.Classes.JobTitleData.JobTitleDataGenerator(Int32 x) in C:UsersYasmin KrugerDocumentsStudio2MeStudio2MeTestsCodenApp.Studio2Me.VolumeTestClassesJobTitleData.cs:line 21
at CodenApp.Studio2Me.VolumeTest.Program.Main(String[] args) in C:UsersYasmin KrugerDocumentsStudio2MeStudio2MeTestsCodenApp.Studio2Me.VolumeTestProgram.cs:line 22
at CodenApp.Studio2Me.VolumeTest.Program.<Main>(String[] args)
< Сильный > EDIT1 :
Я просто отправляю один запрос, чтобы проверить, работает ли он, мне нужно отправить как минимум x * 6 JobTitles, не считая, что есть еще классы для отправки вместе, поэтому мне нужен способ, которым я могу отправить большое количество запросов на API.
< Сильный > EDIT2 :
Трассировка стека из HttpClient:
System.Net.Http.HttpRequestException: An error occurred while sending the request.
---> System.IO.IOException: The response ended prematurely.
at System.Net.Http.HttpConnection.FillAsync()
at System.Net.Http.HttpConnection.ReadNextResponseHeaderLineAsync(Boolean foldedHeadersAllowed)
at System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage request, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.SendWithNtConnectionAuthAsync(HttpConnection connection, HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
at CodenApp.Studio2Me.VolumeTest.UsefulFunctions.HTTPFunctions`1.PostTest(String route, T content) in C:UsersYasmin KrugerDocumentsStudio2MeStudio2MeTestsCodenApp.Studio2Me.VolumeTestUsefulFunctionsHTTPFunctions.cs:line 51
< Сильный > EDIT3 :
Main.cs :
using System;
using CodenApp.Studio2Me.VolumeTest.Classes;
using CodenApp.Studio2Me.VolumeTest.UsefulFunctions;
namespace CodenApp.Studio2Me.VolumeTest
{
class Program
{
static async System.Threading.Tasks.Task Main(string[] args)
{
// await JobTitleData.JobTitleDataGenerator(1);
await JobTitleData.JobTitleDataGenerator2(1);
}
}
}
HTTPFunction.cs:
using System;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
using Easy.Common.Extensions;
using Easy.Common.Interfaces;
using Newtonsoft.Json;
using Shouldly;
using RestClient = Easy.Common.RestClient;
namespace CodenApp.Studio2Me.VolumeTest.UsefulFunctions
{
public class HTTPFunctions<T> where T : class
{
const string APIAddress = "http://localhost:5001/";
public static async Task Post(string route, T content)
{
var endpointUri = new Uri(APIAddress + route);
ServicePointManager.FindServicePoint(endpointUri).ConnectionLeaseTimeout.ShouldBe(-1);
var jsonContent = JsonConvert.SerializeObject(content);
var contentString = new StringContent(jsonContent, Encoding.UTF8, "application/json");
contentString.Headers.ContentType = new MediaTypeHeaderValue("application/json");
using IRestClient client = new RestClient();
HttpResponseMessage response = await client.PostAsync(endpointUri, contentString); //This won't work too
//client.Timeout.ShouldBe(15.Seconds()); Sometimes cause an TimeOut Exception
Console.WriteLine(response);
}
public static async Task PostTest(string route, T content)
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(APIAddress);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
try
{
HttpResponseMessage response = await client.PostAsJsonAsync(route, content).ConfigureAwait(false); //still not working
if(!response.IsSuccessStatusCode)
{
Console.WriteLine(content);
}
}
catch(Exception e)
{
//Using this just to get exception
Console.WriteLine(e.Message);
}
}
}
}
}
JobTitleData.cs:
using System;
using System.Threading.Tasks;
using Bogus;
using CodenApp.Studio2Me.Core.Entities.StoreEntities;
using CodenApp.Studio2Me.VolumeTest.UsefulFunctions;
namespace CodenApp.Studio2Me.VolumeTest.Classes
{
public class JobTitleData
{
public static async Task JobTitleDataGenerator(int x)
{
var faker = new Faker("pt_BR");
for(int i = 0; i < x; i++)
{
JobTitle jobTitle = new JobTitle();
jobTitle.Name = faker.Name.JobTitle();
jobTitle.StoreId = 1;
await HTTPFunctions<JobTitle>.Post("v1/Store/JobTitles", jobTitle);
}
}
public static async Task JobTitleDataGenerator2(int x)
{
var faker = new Faker("pt_BR");
for(int i = 0; i < x; i++)
{
JobTitle jobTitle = new JobTitle();
jobTitle.Name = faker.Name.JobTitle();
jobTitle.StoreId = 1;
await HTTPFunctions<JobTitle>.PostTest("v1/Store/JobTitles", jobTitle);
}
}
}
}
Несколько изменений в коде обсуждались с @Andy, и то же самое вернуло для меня ту же ошибку, я провожу тест на других машинах и пытаюсь вызвать тот же маршрут через Insomnia, чтобы проверить, не что-то еще не настроено . На данный момент он считает, что это мешает серверу, поскольку я не могу вернуть даже ответ объекта.
Предлагаемые изменения:
using (var msg = new HttpRequestMessage(HttpMethod.Post, new UriBuilder(APIAddress) { Path = route }.Uri))
{
msg.Content = new StringContent(JsonConvert.SerializeObject(content), Encoding.UTF8, "application/json");
using (var resp = await _client.SendAsync(msg))
{
resp.EnsureSuccessStatusCode();
await resp.Content.ReadAsStringAsync();
}
}
}
}
< Сильный > EDIT4 :
После стольких испытаний и использования различных программ для вызова маршрута я заметил, что это действительно проблема с сервером, точнее с HTTP-сертификацией, потому что именно он блокирует вызов. Я внесу изменения в проект для получения дополнительной информации, а в edit5 я верну то, что было решено, и отправлю ответ, чтобы завершить этот вопрос.
Спустя долгое время я понял, в чем была большая проблема. Поскольку я использую VSCode для программирования, я не предполагал, что мне нужно вносить какие-либо изменения в папку .vscode
, которая была создана, как только проект был запущен локально. Для тех, кто использует и появляется ошибка Ваше соединение не защищено , то же самое, что и Небезопасно , вы должны выполнить настройку либо из файла {{X1 }} или program.cs
, я внес изменения непосредственно на launch.json
.
launch.json
до изменения:
{
"name": ".NET Core Launch (api)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/Src/CodenApp.Studio2Me.Api/bin/Debug/netcoreapp3.1/CodenApp.Studio2Me.Api.dll",
"args": [],
"cwd": "${workspaceFolder}/Src/CodenApp.Studio2Me.Api",
"stopAtEntry": false,
"serverReadyAction": {
"action": "openExternally",
"pattern": "^\s*Now listening on:\s+(https?://\S+)"
},
"env": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"sourceFileMap": {
"/Views": "${workspaceFolder}/Views"
}
}
launch.json
после изменения:
{
"name": ".NET Core Launch (api)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/Src/CodenApp.Studio2Me.Api/bin/Debug/netcoreapp3.1/CodenApp.Studio2Me.Api.dll",
"args": [],
"cwd": "${workspaceFolder}/Src/CodenApp.Studio2Me.Api",
"stopAtEntry": false,
"serverReadyAction": {
"action": "openExternally",
"pattern": "^\s*Now listening on:\s+(https?://\S+)"
},
"env": {
"ASPNETCORE_ENVIRONMENT": "Development",
"ASPNETCORE_URLS": "http://localhost:5001"
},
"sourceFileMap": {
"/Views": "${workspaceFolder}/Views"
}
}
Мне просто нужно было добавить строку "ASPNETCORE_URLS": "http://localhost:5001"
, чтобы удалить ошибку «Небезопасно», и приложение работало правильно.
0
Yasmin Kruger
10 Авг 2020 в 12:41