|
Ошибка конструктора Com "System.Text.UTF8Encoding" | ☑ | ||
---|---|---|---|---|
0
franky_tut
19.12.22
✎
08:47
|
Коллеги, прошу помочь. При вызове строки во внешней обработке
Текст = Новый COMОбъект("System.Text.UTF8Encoding"); система выдает ошибку "Ошибка при вызове конструктора (COMОбъект)" Не понимаю, что необходимо сделать, чтобы заработало 1С 8.3.22 УТ 11.4 |
|||
1
NorthWind
19.12.22
✎
08:54
|
(0) судя по тому как написано - это ж .Net-овское что-то. Копайте в эту сторону.
|
|||
2
NorthWind
19.12.22
✎
08:55
|
https://avprog.ru/q/809889/ - тут вот пишут что .Net 3.5 нужен
|
|||
3
Asmody
19.12.22
✎
09:45
|
А зачем оно?!
|
|||
4
franky_tut
19.12.22
✎
16:00
|
(3) пытаюсь запустить подписание
Текст = Новый COMОбъект("System.Text.UTF8Encoding"); Криптография = Новый COMОбъект("System.Security.Cryptography.HMACSHA256"); Криптография.Key = Текст.GetBytes_4(СекретныйКлюч); Если base64 Тогда ТекстASCII = Новый COMОбъект("System.Text.ASCIIEncoding"); ХешБайт = Криптография.ComputeHash_2(ТекстASCII.GetBytes_4(Строка)).Выгрузить(); Иначе ХешБайт = Криптография.ComputeHash_2(Текст.GetBytes_4(Строка)).Выгрузить(); КонецЕсли; Хеш = ConvToHexString(ХешБайт); Возврат Хеш; |
|||
5
franky_tut
19.12.22
✎
16:01
|
У меня, почему-то и .Net3.5 вылетает при установке. при том что .net 7 установился
|
|||
6
NorthWind
19.12.22
✎
16:19
|
ну на другом компе попробуйте. Или на виртуалке. Если дело в этом - будете думать, как решить проблему с установкой на своей машине.
|
|||
7
franky_tut
19.12.22
✎
16:22
|
решил проблему установки .net3.5 по этой рекомендации. Проблема из заголовка ушла
https://lyapidov.ru/fix_net_framework_3-5_installation_error/ |
|||
8
oleg_km
19.12.22
✎
16:52
|
Все очень просто. В .NET Framework 4.8.1 и ниже этот класс был доступным COM:
[System.Serializable] [System.Runtime.InteropServices.ComVisible(true)] public class UTF8Encoding : System.Text.Encoding А начиная с .NET Core и в том числе .NET 7 все классы, включая это престали быть доступными в COM: public class UTF8Encoding : System.Text.Encoding |
|||
9
franky_tut
19.12.22
✎
20:15
|
(8) как правильнее делать, чтобы не зависеть от .net3.5 ?
|
|||
10
Сергиус
19.12.22
✎
21:12
|
(4)Вроде как тоже самое можно средствами платформы сделать.
|
|||
11
NorthWind
20.12.22
✎
08:21
|
||||
12
oleg_km
20.12.22
✎
11:14
|
(9) Я подключаю .NET к 1С по методу Сергея Смирнова и могу использовать классы дотнет независимо от их видимости в COM. Можно сделать практически то же, но с помощью HTTP-сервера, тогда не будет использование COM и можно будет перейти на .NET 5,6,7 например.
В вашем случае нет зависимости от .net3.5. Главное чтобы какая-то .NET Framework была установлена, или 3.5 или 4.Х |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |