AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.11.2019, 14:07   #21  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Цитата:
Сообщение от demianimp Посмотреть сообщение
4.5 включен на всех серверах, это и смущает, что на одних работает, а на других нет.
В таком случае я не понимаю как у вас вообще вызов веб-сервисов работает на каких-то серверах. Система в этом случае всегда будет лезть в каталог Bin и не находить там ничего.
Класс AifServiceReferenceManager модифицирован ?
Давно включена поддержка Framework 4.5 в конфиг-файлах АОСов ? С тех пор как она включена - перегенерялись ли какие-либо другие референсы веб-сервисов ? Может какие-то прежние разработчики засунули файл app.config в Bin и вставили в него настройки для всех существовавших на тот момент веб-сервисов ?
На вашем клиентском компьютере в конфиг-файле клиента аксапты тоже включена ?
Тестовые вызовы веб-сервисов делаете из серверного класса ?
__________________
Дмитрий
Старый 18.11.2019, 14:16   #22  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Регистрация: 10.10.2013
Цитата:
Сообщение от Damn Посмотреть сообщение
В таком случае я не понимаю как у вас вообще вызов веб-сервисов работает на каких-то серверах. Система в этом случае всегда будет лезть в каталог Bin и не находить там ничего.
Я тоже не понимаю
Цитата:
Сообщение от Damn Посмотреть сообщение
Класс AifServiceReferenceManager модифицирован ?
Нет
Цитата:
Сообщение от Damn Посмотреть сообщение
Давно включена поддержка Framework 4.5 в конфиг-файлах АОСов ?
Давно
Цитата:
Сообщение от Damn Посмотреть сообщение
С тех пор как она включена - перегенерялись ли какие-либо другие референсы веб-сервисов ? Может какие-то прежние разработчики засунули файл app.config в Bin и вставили в него настройки для всех существовавших на тот момент веб-сервисов ?
Это новый референс веб-сервиса
Цитата:
Сообщение от Damn Посмотреть сообщение
На вашем клиентском компьютере в конфиг-файле клиента аксапты тоже включена ?
Да
Цитата:
Сообщение от Damn Посмотреть сообщение
Тестовые вызовы веб-сервисов делаете из серверного класса ?
Да
__________________
Любую техническую проблему можно решить, если есть достаточно времени и денег.
Старый 18.11.2019, 14:20   #23  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Я бы всё-таки ещё раз проверил файлы Ax32Serv.exe.config на всех АОСах на идентичность.
И файлы-исходники прокси-класса веб-сервиса тоже сравнил бы.
__________________
Дмитрий
Старый 18.11.2019, 18:00   #24  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Регистрация: 10.10.2013
Цитата:
Сообщение от Damn Посмотреть сообщение
Я бы всё-таки ещё раз проверил файлы Ax32Serv.exe.config на всех АОСах на идентичность.
И файлы-исходники прокси-класса веб-сервиса тоже сравнил бы.
Проверил еще раз, на клиенте и сервере включена поддержка .Net 4.5.

Что нашел, так это разницу
Где работает
X++:
//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.42000
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
Где не работает
X++:
//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.36543
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
Это какой dll генериться, кто подскажет?
__________________
Любую техническую проблему можно решить, если есть достаточно времени и денег.
За это сообщение автора поблагодарили: Damn (4).
Старый 18.11.2019, 19:11   #25  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Цитата:
Сообщение от demianimp Посмотреть сообщение
X++:
//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.42000
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
Да, этот текст показывает, что на АОСах действительно включена поддержка 4-го фрэймворка.
4.0.30319.42000 - это версия 4.6.
4.0.30319.36543 - это версии 4 - 4.5.2.
Может в этом кроется что-то.

А какая конфигурация АОСов ?
Одно приложение = один АОС ? Связь "один к одному" ?
Какая именно версия Framework прописана в файле Ax32Serv.exe.config ? Там указывается верхний предел версии. Он ниже 4.6 ?

Не могу поверить что у вас на каких-то АОСах инициализация soapClient работает корректно У меня такое не получалось, сколько ни пытался. Поэтому пришлось перейти на нештатный способ генерации референсов. Я конечно от этого получил дополнительные плюсы (например, возможность вызова сервисов с basic-аутентификацией). Но штатный способ тоже было бы интересно заставить работать. Для общего развития.
__________________
Дмитрий
Старый 18.11.2019, 20:56   #26  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Регистрация: 10.10.2013
Цитата:
Сообщение от Damn Посмотреть сообщение
А какая конфигурация АОСов ?
Одно приложение = один АОС ? Связь "один к одному" ?
Это тестовые среды, поэтому 1 к 1, все на одном сервере

Цитата:
Сообщение от Damn Посмотреть сообщение
Какая именно версия Framework прописана в файле Ax32Serv.exe.config ? Там указывается верхний предел версии. Он ниже 4.6 ?
Код:
<?xml version="1.0" encoding="utf-8" ?>

<configuration>

   <startup useLegacyV2RuntimeActivationPolicy="true">

       <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>

   </startup>

</configuration>
Цитата:
Сообщение от Damn Посмотреть сообщение
Не могу поверить что у вас на каких-то АОСах инициализация soapClient работает корректно У меня такое не получалось, сколько ни пытался. Поэтому пришлось перейти на нештатный способ генерации референсов. Я конечно от этого получил дополнительные плюсы (например, возможность вызова сервисов с basic-аутентификацией). Но штатный способ тоже было бы интересно заставить работать. Для общего развития.
Вот и я уже неделю не сплю. В одной среде все работает, думал все финишная прямая, а тут такая подстава.
__________________
Любую техническую проблему можно решить, если есть достаточно времени и денег.
Старый 18.11.2019, 21:21   #27  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
А какая версия Framework установлена на серверах?
Везде разная?
Предлагаю в файле Ax32Serv.exe.config указать именно ту версию framework, которая установлена в Windows. И потестировать - сгенерить референс снова, перезапустить АОС и т.д.
__________________
Дмитрий
Старый 18.11.2019, 21:40   #28  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Регистрация: 10.10.2013
Цитата:
Сообщение от Damn Посмотреть сообщение
А какая версия Framework установлена на серверах?
Везде разная?
Предлагаю в файле Ax32Serv.exe.config указать именно ту версию framework, которая установлена в Windows. И потестировать - сгенерить референс снова, перезапустить АОС и т.д.
Обновил на проблемном сервере Framework до 4.6. Перезагрузил сервер, сгенерил новые библиотеки. Проблема осталась.

Выставил новую версию Framework в конфигу, ребутнул AOS. Проблема осталась.
__________________
Любую техническую проблему можно решить, если есть достаточно времени и денег.
Старый 18.11.2019, 22:24   #29  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
После установки новой версии framework в конфиге АОСа нужно перегенерить референсы.
__________________
Дмитрий
Старый 19.11.2019, 07:09   #30  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Регистрация: 10.10.2013
Все это было сделано, но результат тот же
__________________
Любую техническую проблему можно решить, если есть достаточно времени и денег.
Старый 19.11.2019, 07:34   #31  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
То есть теперь мы имеем следующую ситуацию:
Несколько аосов с идентичной версией framework в windows, с идентичными файлами Ax32Serv.exe.config, с идентичными файлами-исходниками референсов.
При этом на каких-то серверах soapclient инициализируется корректно, а на каких-то нет.
Потрясающе.

Планируйте отказ от штатной генерации референсов ))
__________________
Дмитрий
Старый 19.11.2019, 10:57   #32  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Регистрация: 10.10.2013
Цитата:
Сообщение от Damn Посмотреть сообщение
Потрясающе.

Планируйте отказ от штатной генерации референсов ))
Я правильно понимаю, что внешняя генерация создаст dll, которую надо будет хранить на сервере и клиенте?
__________________
Любую техническую проблему можно решить, если есть достаточно времени и денег.
Старый 19.11.2019, 11:37   #33  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Нет, внедряетесь в функцию Classes\AifServiceReferenceManager::generate и генерите файлы %ReferenceName%.cs, %ReferenceName%.dll и app.config альтернативным способом.
Остальные действия с файлами система выполняет как и прежде - копирует их из временной папки на сервер, с сервера на клиент и т.д.
Всё остаётся как в штатном режиме - количество файлов, название файлов. Только сами файлы внутри другие. И инициализация soapClient чуть изменится. Придётся биндинги и эндпойнты формировать в программном коде. У такого подхода есть как плюсы (больше возможностей) так и минусы (больше программировать). Для меня плюсы превысили минусы.
__________________
Дмитрий
Старый 19.11.2019, 11:38   #34  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Регистрация: 10.10.2013
И для особо одаренных, если зависит от версии framework, то как система понимает, ей в приложение лезть или на сервер? Я этого понять не могу. Тут получается, что генерация проходит корректно, а обращение к dll нет.
__________________
Любую техническую проблему можно решить, если есть достаточно времени и денег.
Старый 19.11.2019, 12:11   #35  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Подытожим немного.

При штатном формировании референсов (без поддержки Framework 4.5) система при обращении к dll ищет app.config в папке, где лежит dl.
Поиск файла app.config происходит при вызове new SoapClient(). Потому что штатная dll не позволяет при инициализации soapclient передавать в конструктор биндинги и эндпойнты.

С поддержкой 4.5 начинаются проблемы. Сгенерённая dll при инициализации soapclient ищет для себя app.config в каталоге, где расположено вызвавшее её приложение (папка Bin аоса).
Если сгенерить dll нештатно, то при инициализации soapClient появляется возможность самостоятельно создать биндинги и эндпойнты, чтобы исключить попытки поиска файла app.config.

Ваш пример навёл меня на мысли, что возможно алгоритм поиска app.config зависит от конкретной версии Framework в Windows.
Например, если сгенерить dll на сервере с Framework 4.5, то app.config будет искаться в папке dll. А если сгенерить dll на сервере с версией 4.6+ , то app.config будет искаться в папке Bin.
К сожалению, не могу проверить это. У меня минимальная версия фрэймворка на серверах - 4.7.
__________________
Дмитрий
Старый 19.11.2019, 14:38   #36  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Регистрация: 10.10.2013
Цитата:
Сообщение от Damn Посмотреть сообщение
Ваш пример навёл меня на мысли, что возможно алгоритм поиска app.config зависит от конкретной версии Framework в Windows.
Например, если сгенерить dll на сервере с Framework 4.5, то app.config будет искаться в папке dll. А если сгенерить dll на сервере с версией 4.6+ , то app.config будет искаться в папке Bin.
К сожалению, не могу проверить это. У меня минимальная версия фрэймворка на серверах - 4.7.
Даже пересадка dll с здорового сервера на больной не дало результата. Есть ли где-то настройки Framework?
__________________
Любую техническую проблему можно решить, если есть достаточно времени и денег.
Старый 19.11.2019, 14:54   #37  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Цитата:
Сообщение от demianimp Посмотреть сообщение
Даже пересадка dll с здорового сервера на больной не дало результата
Эксперимент должен заключаться не в пересадке dll. А в даунгрейде фрэймворка на больном сервере (4.6 -> 4.5). Не знаю возможна ли вообще такая процедура.

Или можно взять "здоровый" сервер и сделать ему апгрейд фрэймворка до 4.6. Чтобы "заразить" его ))
__________________
Дмитрий
За это сообщение автора поблагодарили: demianimp (2).
Старый 19.11.2019, 16:18   #38  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
А в папке bin серверов файлы WebReferenceGenerator.config идентичны?
В частности флаг включения отладочной информации одинаковый?
За это сообщение автора поблагодарили: demianimp (2).
Старый 19.11.2019, 17:10   #39  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Регистрация: 10.10.2013
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
А в папке bin серверов файлы WebReferenceGenerator.config идентичны?
В частности флаг включения отладочной информации одинаковый?
WebReferenceGenerator.config идентичны
__________________
Любую техническую проблему можно решить, если есть достаточно времени и денег.
Старый 19.11.2019, 17:17   #40  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Регистрация: 10.10.2013
Цитата:
Сообщение от Damn Посмотреть сообщение
Эксперимент должен заключаться не в пересадке dll. А в даунгрейде фрэймворка на больном сервере (4.6 -> 4.5). Не знаю возможна ли вообще такая процедура.

Или можно взять "здоровый" сервер и сделать ему апгрейд фрэймворка до 4.6. Чтобы "заразить" его ))
На "здоровом" как раз и был установлен 4.6. Пока я пытался его "заразить", "зараженный" начал работать

Что произошло, я не знаю
__________________
Любую техническую проблему можно решить, если есть достаточно времени и денег.
Теги
ax2009, ax2012, web service

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
AX2012 AIF HTTP WebService и их вызов из AX2009 Dmytro.Semenakha DAX: Программирование 2 29.03.2016 09:38
Перенос и адаптация кода с Ax2009 на Ax2012 R3 matew DAX: Прочие вопросы 10 23.01.2015 19:52
Deploy reports to SRS при одновременно установленной AX2009 и ax2012 mazzy DAX: Администрирование 3 18.12.2012 15:50
emeadaxsupport: AX2012 and AX2009 or AX4 side by side - AOS performance counters overwritten Blog bot DAX Blogs 0 13.03.2012 18:11
Перенос данных из AX2009 в AX2012 trud DAX: Администрирование 3 21.02.2012 12:35

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 17:38.