Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline nex-54  
#1 Оставлено : 23 декабря 2011 г. 20:08:46(UTC)
nex-54

Статус: Активный участник

Группы: Участники
Зарегистрирован: 25.07.2011(UTC)
Сообщений: 60
Мужчина
Откуда: Ekaterinburg

Сказал «Спасибо»: 1 раз
Как можно используя COM интерфейс получить текстовое описание ошибки на C#, зная ее код?

нашел такое http://www.cryptopro.ru/.../html%5Cerrorcodes.html, но не знаю, как его применить на C#

Отредактировано пользователем 23 декабря 2011 г. 20:17:10(UTC)  | Причина: Не указана

Offline Новожилова Елена  
#2 Оставлено : 26 декабря 2011 г. 17:59:16(UTC)
Новожилова Елена

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 10.12.2008(UTC)
Сообщений: 924
Женщина
Откуда: Крипто-Про

Поблагодарили: 99 раз в 95 постах
Можно попробовать так:

try
{
...
}
catch (Exception e)
{
e.Message = текстовое описание ошибки
}
Offline nex-54  
#3 Оставлено : 26 декабря 2011 г. 18:40:11(UTC)
nex-54

Статус: Активный участник

Группы: Участники
Зарегистрирован: 25.07.2011(UTC)
Сообщений: 60
Мужчина
Откуда: Ekaterinburg

Сказал «Спасибо»: 1 раз
Елена, не очень понял ваш совет.

Допустим у меня возникла ошибка при подписании. Ошибку я обрабатываю и у меня есть ее код. Но пользователю я хочу показать осмысленное сообщение.
Насколько я понял, в tsp, ocsp библиотеках есть эти самые текстовые описания и их можно оттуда извлечь. Меня интересует как можно это сделать на C#.

В качестве временного решения зашил в код сопоставление кодов и описания из того списка по ссылке. Но хотелось бы более лаконичное решение.
И там указаны не все коды ошибок.

Спасибо за советы.

Отредактировано пользователем 26 декабря 2011 г. 18:50:15(UTC)  | Причина: Не указана

Online Андрей Писарев  
#4 Оставлено : 26 декабря 2011 г. 20:40:47(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,334
Мужчина
Российская Федерация

Сказал «Спасибо»: 550 раз
Поблагодарили: 2210 раз в 1725 постах
nex-54 написал:
Елена, не очень понял ваш совет.

Допустим у меня возникла ошибка при подписании. Ошибку я обрабатываю и у меня есть ее код. Но пользователю я хочу показать осмысленное сообщение.
Насколько я понял, в tsp, ocsp библиотеках есть эти самые текстовые описания и их можно оттуда извлечь. Меня интересует как можно это сделать на C#.

В качестве временного решения зашил в код сопоставление кодов и описания из того списка по ссылке. Но хотелось бы более лаконичное решение.
И там указаны не все коды ошибок.

Спасибо за советы.


Цитата:
Ошибку я обрабатываю и у меня есть ее код


покажи, как ты ее обрабатываешь....
и чем приведенный код на c# от Елены тебя не устроил...


Техническую поддержку оказываем тут
Наша база знаний
Offline nex-54  
#5 Оставлено : 26 декабря 2011 г. 21:10:53(UTC)
nex-54

Статус: Активный участник

Группы: Участники
Зарегистрирован: 25.07.2011(UTC)
Сообщений: 60
Мужчина
Откуда: Ekaterinburg

Сказал «Спасибо»: 1 раз
ниточтобы не устраивает, просто там не все возникающие ошибки описаны. Примерно так сейчас обрабатываю:

string errorMessage;
try
{
sSignedData = cadesSignedData.SignCades(cpSigner, CADESCOM_CADES_TYPE.CADESCOM_CADES_X_LONG_TYPE_1, true);
errorMessage = null;
}
catch (COMException ex)
{
errorMessage = GetErrorMessageByCode(ex.ErrorCode);
}

string GetErrorMessageByCode(int code)
{
var codeFormated = (uint)code;
switch (codeFormated)
{
case 0xC2100100: return @"При попытке отправки запроса возникла ошибка HTTP";
...
}
}

хотел бы GetErrorMessageByCode заменить функцией из библиотеки если такая есть.

Отредактировано пользователем 26 декабря 2011 г. 21:11:42(UTC)  | Причина: Не указана

Online Андрей Писарев  
#6 Оставлено : 26 декабря 2011 г. 21:26:02(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,334
Мужчина
Российская Федерация

Сказал «Спасибо»: 550 раз
Поблагодарили: 2210 раз в 1725 постах
замени на код, что привели...

Техническую поддержку оказываем тут
Наша база знаний
Offline Новожилова Елена  
#7 Оставлено : 26 декабря 2011 г. 23:32:35(UTC)
Новожилова Елена

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 10.12.2008(UTC)
Сообщений: 924
Женщина
Откуда: Крипто-Про

Поблагодарили: 99 раз в 95 постах
Код:
string errorMessage;
try
{
   sSignedData = cadesSignedData.SignCades(cpSigner, CADESCOM_CADES_TYPE.CADESCOM_CADES_X_LONG_TYPE_1, true);
   errorMessage = null;
}
catch (Exception e)
{
   errorMessage = e.Message;
}


Так понятнее?
Offline nex-54  
#8 Оставлено : 27 декабря 2011 г. 17:03:15(UTC)
nex-54

Статус: Активный участник

Группы: Участники
Зарегистрирован: 25.07.2011(UTC)
Сообщений: 60
Мужчина
Откуда: Ekaterinburg

Сказал «Спасибо»: 1 раз
Новожилова Елена написал:

errorMessage = e.Message;

Так точно не подходит.
Если написать так, то пользователь увидит сообщение наподобие "Exception from HRESULT: 0x80072EE7"
Врятли он из этого поймет, что ocsp сервис недосупен.
Offline Новожилова Елена  
#9 Оставлено : 27 декабря 2011 г. 17:58:57(UTC)
Новожилова Елена

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 10.12.2008(UTC)
Сообщений: 924
Женщина
Откуда: Крипто-Про

Поблагодарили: 99 раз в 95 постах
Ошибку при возврате текстовых описаний ошибок воспроизвели. Исправленный билд будет в Новом году :-)
Offline nex-54  
#10 Оставлено : 27 декабря 2011 г. 18:08:11(UTC)
nex-54

Статус: Активный участник

Группы: Участники
Зарегистрирован: 25.07.2011(UTC)
Сообщений: 60
Мужчина
Откуда: Ekaterinburg

Сказал «Спасибо»: 1 раз
Спасибо и с наступающим :-)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.