01.11.2018, 12:31 | #1 |
Участник
|
Приведение типов в Axapta
Собственно проблема:
Axapta 2009, .NET 3.5 в ней отсутствует SecurityProtocolType::TLS12, на c# это можно обойти через приведение типов: Код: ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; X++: System.Net.ServicePointManager::set_SecurityProtocol(System.Net.SecurityProtocolType::TLS12); |
|
01.11.2018, 13:18 | #2 |
Участник
|
Можно научить DAX2009 понимать объекты .NET 4*.
В клиента в каталог bin положите файл ax32.exe.config со следующим содержимым: X++: <?xml version="1.0" encoding="utf-8" ?> <configuration> <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/> </startup> </configuration> Естественно и клиента и сервер нужно перезапустить. Именно для работы с TLS12 сделали так, работает как минимум полгода без проблем. Правда что-то у нас пошло не так при прямом указании X++: System.Net.SecurityProtocolType::TLS12 X++: protocolType = CLRInterop::parseClrEnum(#SystemNetSecurityProtocolType, #Tls12); X++: #define.SystemNetSecurityProtocolType('System.Net.SecurityProtocolType') #define.Tls12('Tls12') |
|
|
За это сообщение автора поблагодарили: Dreadlock (4), Veter (1), Logger (3), Damn (4), Sergey Petrov (1), S.Kuskov (10). |
08.04.2019, 14:42 | #3 |
Участник
|
Цитата:
Продолжает ли работать ваш способ с файлами ax32*.exe.config ? Вы всем пользователям при установке клиента аксапты дополнительно копируете эти конфиг-файлы ? Глобальная компиляция не выдаёт ошибки ? Используете ли из .NET Framework 4.5 что-то ещё помимо Tls12 ?
__________________
Дмитрий |
|
08.04.2019, 21:02 | #4 |
Участник
|
Ничего себе, время летит.
Неделю назад, когда я расстался с работодателем, в котором это делали, все работало абсолютно без проблем. Цитата:
Нет, не выдает, так как конфиги сделаны на тех клиентах, на которых есть шанс, что будет запущена компиляция. Каким-то специальным образом нет, но когда добавляешь какой-то референс, Аксапта берет библиотеку именно 4.5. Заметили это по тем разраотчикам, которые работают удаленно через Цитрикс - если у постоянных разработчиков все было настроено, то в Цитрикс не сразу сделали эти настройки и у удаленных разработчиков с новыми референсами выдавались ошибки в случае, если используемые объекты NET в 4.5 изменились по сравнению с 3.5. То есть, использование каких-то специфичных для 4.5 особенностей прямым образом не задавались, но эффект получили. Последний раз редактировалось Raven Melancholic; 08.04.2019 в 21:04. |
|
|
За это сообщение автора поблагодарили: mikki_messer (1). |
10.04.2019, 16:11 | #5 |
Участник
|
Цитата:
Что-то у нас референсы на веб-сервисы после восстановления перестали работать. Не получается инициализировать soap client. Убираем конфиг-файл из АОСа, восстанавливаем референсы и они снова начинают работать корректно.
__________________
Дмитрий |
|
11.04.2019, 09:33 | #6 |
Участник
|
Если быть точным, то получаем вот такую ошибку :
"Не удалось найти файл App.config в местоположении сборки на сервере. Наиболее вероятной причиной этого является код, выполняющийся на уровне клиента. Запустите код на уровне сервера." Вдруг кто-то сталкивался. Код выполняется на сервере.
__________________
Дмитрий |
|
|
За это сообщение автора поблагодарили: Logger (1). |
11.04.2019, 10:01 | #7 |
Участник
|
Цитата:
Для WEB сервисов брали либо готовые NET сборки (например, для MS Exchange библиотеку EWS от Microsoft - кстати, вот еще пример, когда понадобилась версия выше, чем поддерживает DAX2009) либо писали сами такие оболочки, либо в самой Аксапте выполняли все, что нужно для вызова сервиса. |
|
21.10.2019, 18:32 | #8 |
Участник
|
Цитата:
Чтобы понимать в каком АОСе мы сейчас находимся. С поддержкой Framework 4.5 или без поддержки.
__________________
Дмитрий |
|
22.10.2019, 06:34 | #9 |
Microsoft Dynamics
|
Цитата:
PS. Этот вариант как раз напомнил мне проблему, когда неопытнай разработчик не совсем понимает, что его код может работать на разных компьютерах и пытается прочитать клиентский файл из кода, который работает на сервере. А может наоборот, эта проблема напомнила про такой вариант Последний раз редактировалось AlexSD; 22.10.2019 в 06:39. |
|
22.10.2019, 08:23 | #10 |
Участник
|
Я думал может есть какой-нибудь красивый вариант получения свойства supportedRuntime из конфиг-файла, который использовал автор темы.
Например, с помощью System.Configuration или ещё каких-нибудь встроенных вещей. А так конечно придётся просто файл считывать.
__________________
Дмитрий |
|
22.10.2019, 12:07 | #11 |
Участник
|
Можно примерно так (правда код проверял только на AX 2012 и версия .net 4.0, может быть и на 3.5 будет работать), но все равно саму секцию придется парсить как xml.
X++: static void getStartupSectionInfo(Args _args) { System.Configuration.ConfigurationSection section; System.Configuration.SectionInformation sectionInfo; System.Configuration.Configuration curConfig; System.Configuration.ConfigurationSectionCollection sections; str strValue; MenuFunction menuFunction; if (! isRunningOnServer()) { menuFunction = ClassFactory::makeObjectOnServer(classNum(MenuFunction)); menuFunction.objectType(MenuItemObjectType::Job); menuFunction.object(funcname()); menuFunction.runOn(2); menuFunction.run(); return; } curConfig = System.Configuration.ConfigurationManager::OpenExeConfiguration(System.Configuration.ConfigurationUserLevel::None); if (curConfig) { sections = curConfig.get_Sections(); if (sections) { section = sections.get_Item('startup'); if (section) { sectionInfo = section.get_SectionInformation(); strValue = sectionInfo.GetRawXml(); info(strValue); } } } info("done"); }
__________________
Sergey Nefedov |
|
|
За это сообщение автора поблагодарили: Logger (1). |
23.10.2019, 09:15 | #12 |
Участник
|
Понятно. Самый простой способ - считывать файл и парсить его с помощью XMLDocument.
Название файла фиксировано, находится он всегда в одной и той же папке - xInfo::directory( DirectoryType::Bin) .
__________________
Дмитрий |
|
08.08.2023, 16:56 | #13 |
Участник
|
Цитата:
Сообщение от Raven Melancholic
Можно научить DAX2009 понимать объекты .NET 4*.
В клиента в каталог bin положите файл ax32.exe.config со следующим содержимым: X++: <?xml version="1.0" encoding="utf-8" ?> <configuration> <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/> </startup> </configuration> А кто-нибудь пробовал такой финт для Ax2012 R3, поднять версию .Net до, например, 4.8.1 ? Все нормально работает ? Зачем : По некоторым библиотекам (Confluent Kafka) для .net 4.5 прекращена поддержка, только 4.6.1 Поэтому есть желание поднять версию. |
|
Теги |
ax32.exe.config, ax32serv.exe.config, c#, securityprotocoltype, x++, фсс, элн |
|
Похожие темы | ||||
Тема | Ответов | |||
Приведение типов для таблиц ax2012 | 15 | |||
axaptacorner: Dynamics Axapta History | 0 | |||
приведение типов при ClearRange | 2 | |||
приведение типов в select | 3 | |||
Введение в Аксапту | 0 |
|