|
Ошибка конструктора 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.Х
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший