Статус: Участник
Группы: Участники
Зарегистрирован: 10.06.2021(UTC) Сообщений: 16  Откуда: Орел
|
Добрый день, В сайте ASP.NET 4.5.1 пытаемся проверить подпись с помощью объекта CadesSignedData. При попытке его создания возникает ошибка CResourceException, из-за которой весь сайт падает. Код:
Unhandled exception at 0x00007FFC70656EA8 in w3wp.exe_250217_140647.dmp: Microsoft C++ exception: CResourceException at memory location 0x000000E899EF8B60.
Стек ошибки: Код:
[Managed to Native Transition]
mscorlib.dll!System.RuntimeType.CreateInstanceSlow(bool publicOnly, bool skipCheckThis, bool fillCache, ref System.Threading.StackCrawlMark stackMark) Line 4097 C#
mscorlib.dll!System.Activator.CreateInstance(System.Type type, bool nonPublic) Line 365 C#
mscorlib.dll!System.Activator.CreateInstance(System.Type type) Line 254 C#
DocsVision.BackOffice.ObjectModel.CryptoPro.dll!DocsVision.BackOffice.DigitalSignature.CadesXLongType1Signature.SignatureLogic.VerifyDetached(DocsVision.BackOffice.DigitalSignature.ISignatureDataAccessor data, byte[] signature, DocsVision.BackOffice.ObjectModel.DigitalSignatureKind signatureKind) Line 98 C#
Код в исходниках выглядит так: Код:
using CAdESCOM;
public void VerifyDetached(ISignatureDataAccessor data, byte[] signature, DigitalSignatureKind signatureKind)
{
var signedData = new CadesSignedData();
При декомпиляции этого кода из сборки он выглядит так: Код:
public void VerifyDetached(ISignatureDataAccessor data, byte[] signature, DigitalSignatureKind signatureKind)
{
CadesSignedData cadesSignedData = (CadesSignedData)Activator.CreateInstance(Marshal.GetTypeFromCLSID(new Guid("1264A46A-FDB8-43A3-AEE3-00E1684C98E9")));
Выше по стеку код обернут в try/catch, но это не помогает - весь процесс w3wp сайта падает из-за этой ошибки. Ошибка плавающая, возникает несколько раз в неделю. На сервере установлен КриптоПро CSP 5.0 R3 (5.0.13000). Скажите, пожалуйста, какие ресурсы Windows запрашиваются при создании CadesSignedData? Из-за чего может возникать такая ошибка? Как можно обработать эту ошибку, чтобы весь сайт не падал из-за нее?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,404  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 10.06.2021(UTC) Сообщений: 16  Откуда: Орел
|
Автор: Максим Коллегин  Дамп собрали, отправили по каналам техподдержки, тикет #148897
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,404  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
СпасиБо, получили, изучаем. |
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,404  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
С ходу не вижу причину проблемы. А вы пробовали кэширофвать результат Код:Marshal.GetTypeFromCLSID(new Guid("1264A46A-FDB8-43A3-AEE3-00E1684C98E9"))
и использовать его при создании объектов CAdESCOM? Отредактировано пользователем 20 марта 2025 г. 22:06:16(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 10.06.2021(UTC) Сообщений: 16  Откуда: Орел
|
Автор: Максим Коллегин  С ходу не вижу причину проблемы. А вы пробовали кэширофвать результат Код:Marshal.GetTypeFromCLSID(new Guid("1264A46A-FDB8-43A3-AEE3-00E1684C98E9"))
и использовать его при создании объектов CAdESCOM? Можно попробовать, но сомневаюсь что в этом дело, т.к. ошибка не в GetTypeFromCLSID, а в CreateInstance согласно колстеку. Можете код конструктора CadesSignedData привести? Есть там обращение к каким-либо ресурсам windows? Технически в исходниках у нас нет вызова GetTypeFromCLSID, это генерирует компилятор. Но можно, конечно, в порядке эксперимента, вручную код сделать. Отредактировано пользователем 21 марта 2025 г. 10:55:44(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,404  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
Исключение появляется при загрузке CAdESCOM.dll, поэтому я и предложил кэшировать поиск типа, предположив, что он и загружает dll. Но нет, Dll загружается только при CreateInstance.
Тогда другое предложение -- создать заранее глобальный объяект CadesSignedData, чтобы не Dll не загружалась\выгружалась при работе приложения. |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close