Closed tammaco closed 7 years ago
Правда были ещё warnings при регистраци сборки:
Types registered successfully
Type library exporter warning processing 'Diadoc.Api.IComDiadocApi.GetCounteragents(pageSize), DiadocApi'.
Warning: Type library exporter encountered a generic type instance in a signature. Generic code may not be exported to COM. Type library exporter warning processing 'Diadoc.Api.Proto.IBox.get_InvoiceFormatVersion(#0), DiadocApi'.
Warning: Non COM visible value type 'Diadoc.Api.Proto.OrganizationInvoiceFormatVersion' is being referenced either from the type currently being exported or from one of its base types.
Assembly exported to 'C:\...\DiadocApi\DiadocApi\bin\Debug\DiadocApi.tlb', and the type library was registered successfully
Могло ли это повлиять?
При проверке на боевых сертификатах, ошибка вылезает уже при попытке создания
diadoc = new ActiveXObject("Diadoc.Api.ComDiadocApi2");
Невозможно создание объекта сервером программирования объектов (-2146827859)
Как уже заставить работать вашу новую сборку??? Обратиет же внимание, вы же служба поддержки!
Я попробовал создать и использовать COM-объект в JScript:
var diadoc = new ActiveXObject("Diadoc.Api.ComDiadocApi2");
diadoc.Initialize(apiKeyHere, "https://diadoc-api.kontur.ru");
var token = diadoc.AuthenticateWithPassword(loginHere, passwordHere);
print(token);
var box = diadoc.GetMyOrganizations(token);
print(box.Count);
Код отрабатывает без ошибок, все запросы успешны и я вижу корректный вывод на консоль актуальных данных. Это на сборке, зарегистрированной с warnings в консоли.
Сделал Pull Requrest #196 с фиксом warnings при регистрации сборок, но он еще не зарелизен. Если срочно, попробуйте сами собрать ваши изменения с #196-изменениями и попробовать еще раз выполнить ваш код.
Можете попробовать еще раз выполнить регистрацию сборки? Опишите процесс регистрации сборок - как вы его выполняете? Возможно, вы запускаете один bat-файл, попробуйте запустить оба.
Добрый день! Сборка регистрируется из папки Debug. Может тоже нужна Release версия? И какой второй bat файл имеется в виду? Который unblock?
Есть два файла регистрации: Diadoc_Reg.bat и Diadoc_Reg64.bat
Изначально проблема наверное из-за того, что исходный код вашего SDK был исправлен, добавили пару функций. Тогда ещё не было вариантов сделать это на github. Потом, когда вышла новая версия, решено было не менять полностью весь исходный код (который теперь нужно доставать не просто в архиве, а через powershell, ну да ладно, прогресс....). Заменили файлы новыми, сравнили в TFS - вроде никого не задели и такую сборку зарегистрировали. Наверное это была ошибка и нужно полностью менять весь код и заново дописывать свой функционал. На всякий случай, для чистоты эксперимента, нигде нельзя скачать уже сгененированный C# код, можно без примеров? Я просто удалённый сотрудник, занимаюсь Диадоком после основной работы, поэтому проверить смогу только после 6 вечера.
Спасибо.
17 авг. 2017 г. 10:33 пользователь "Aleksei" notifications@github.com написал:
Есть два файла регистрации: Diadoc_Reg.bat и Diadoc_Reg64.bat
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/diadoc/diadocsdk-csharp/issues/189#issuecomment-322992363, or mute the thread https://github.com/notifications/unsubscribe-auth/AGz5lzE7_0TtUxsXQeVlOFaIJEi_1ci-ks5sY-yrgaJpZM4OuGfC .
Github позволяет скачать файлы в ZIP-архиве для любого коммита. Перейдите в коммит, который вас интересует, нажмите "Browse files" и найдите зеленую кнопку "Clone or download" - нажмите и скачайте ZIP.
Скачала ещё 5 раз и переустановила.... На локальном компьютере создание объекта завершается усепшно. Но на клиенте, у которого есть сертификат сборка зарегистрирована, но объект не создаётся.
Мне не очень нравится строка 1.0.0.0 в InprocServer32 - у свежей сборки DiadocAPI.dll должна быть версия не ниже 1.45.0.0. Вы запускаете bat-файлы регистрации с правами администратора?
Да, конечно, но у вас в AssemblyVersion.cs написано [assembly: AssemblyVersion("1.0.0.0")]
Мы собираем DiadocSDK с помощью файла generate.bat
, и DiadocApi.dll
который нужен для регистрации берем из файла bin\Release\diadocsdk-csharp-binaries.zip
.
В этом случае для DiadocApi.dll проставляется корректная версия AssemblyVersion, а также идет ILMerge сборки protobuf-net.dll в сборку DiadocApi.dll.
А как вы его собираете и какую dll используете для регистрации?
Нам на клиенте нужны только несколько классов из DiadocSDK - для подписания документов и отправки сообщения. Для предыдущих версий на клиентской машине достаточно было просто зарегистрировать DiadocApi.dll, который мы брали из папки bin/Debug (ваш проект был в нашем solution, так как были доработки). Потом ставили cadesplugin и всё работало. С новой версией так не получается.
Процесс с ILMerge сборки protobuf-net.dll в сборку DiadocApi.dll у нас существовал всегда. Если вы берете DiadocAPI.dll из папки bin/Debug, убедитесь что рядом лежит как минимум protobuf-net.dll. Если не получается, все-таки, попробуйте получить готовую сборку описанным мной способом и зарегистрировать ее.
Вообще, рекомендованный процесс сборки DiadocSDK для C# описан в readme.md
protobuf-net.dll там естественно был. Теперь добавился и JetBrains. readme говорит сам за себя и не раз прочитан и пункты все выполнены и на сервере всё ок (хотя и там в реестре версия 1.0.0.0). Интересовала именно клиентская машина. Видимо помощь зашла в тупик.
Добрый вечер! Возникает проблема из title при попытке подписи MessageToPost. Исходный код:
P.S. Функции SignBase64Content и LoadBase64Content были дописаны для API, чтобы была доступна возможность подписания документа на клиенте. Они были добавлены давно, библиотека перепересобрана и зарегистрирована. Код работал до обновленмя API до последней версии и перевыпуска сертификата.
Помогите пожалуйста понять, в чём проблема. Спасибо.