18.11.2019, 14:07 | #21 |
Участник
|
Цитата:
Класс AifServiceReferenceManager модифицирован ? Давно включена поддержка Framework 4.5 в конфиг-файлах АОСов ? С тех пор как она включена - перегенерялись ли какие-либо другие референсы веб-сервисов ? Может какие-то прежние разработчики засунули файл app.config в Bin и вставили в него настройки для всех существовавших на тот момент веб-сервисов ? На вашем клиентском компьютере в конфиг-файле клиента аксапты тоже включена ? Тестовые вызовы веб-сервисов делаете из серверного класса ?
__________________
Дмитрий |
|
18.11.2019, 14:16 | #22 |
Участник
|
Цитата:
Нет Давно Цитата:
Цитата:
Да
__________________
Любую техническую проблему можно решить, если есть достаточно времени и денег. |
|
18.11.2019, 14:20 | #23 |
Участник
|
Я бы всё-таки ещё раз проверил файлы Ax32Serv.exe.config на всех АОСах на идентичность.
И файлы-исходники прокси-класса веб-сервиса тоже сравнил бы.
__________________
Дмитрий |
|
18.11.2019, 18:00 | #24 |
Участник
|
Цитата:
Что нашел, так это разницу Где работает 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> //------------------------------------------------------------------------------
__________________
Любую техническую проблему можно решить, если есть достаточно времени и денег. |
|
|
За это сообщение автора поблагодарили: Damn (4). |
18.11.2019, 19:11 | #25 |
Участник
|
Цитата:
Сообщение от 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.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 |
Участник
|
Цитата:
Цитата:
Код: <?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 |
Участник
|
А какая версия Framework установлена на серверах?
Везде разная? Предлагаю в файле Ax32Serv.exe.config указать именно ту версию framework, которая установлена в Windows. И потестировать - сгенерить референс снова, перезапустить АОС и т.д.
__________________
Дмитрий |
|
18.11.2019, 21:40 | #28 |
Участник
|
Цитата:
Выставил новую версию Framework в конфигу, ребутнул AOS. Проблема осталась.
__________________
Любую техническую проблему можно решить, если есть достаточно времени и денег. |
|
18.11.2019, 22:24 | #29 |
Участник
|
После установки новой версии framework в конфиге АОСа нужно перегенерить референсы.
__________________
Дмитрий |
|
19.11.2019, 07:09 | #30 |
Участник
|
Все это было сделано, но результат тот же
__________________
Любую техническую проблему можно решить, если есть достаточно времени и денег. |
|
19.11.2019, 07:34 | #31 |
Участник
|
То есть теперь мы имеем следующую ситуацию:
Несколько аосов с идентичной версией framework в windows, с идентичными файлами Ax32Serv.exe.config, с идентичными файлами-исходниками референсов. При этом на каких-то серверах soapclient инициализируется корректно, а на каких-то нет. Потрясающе. Планируйте отказ от штатной генерации референсов ))
__________________
Дмитрий |
|
19.11.2019, 10:57 | #32 |
Участник
|
Я правильно понимаю, что внешняя генерация создаст dll, которую надо будет хранить на сервере и клиенте?
__________________
Любую техническую проблему можно решить, если есть достаточно времени и денег. |
|
19.11.2019, 11:37 | #33 |
Участник
|
Нет, внедряетесь в функцию Classes\AifServiceReferenceManager::generate и генерите файлы %ReferenceName%.cs, %ReferenceName%.dll и app.config альтернативным способом.
Остальные действия с файлами система выполняет как и прежде - копирует их из временной папки на сервер, с сервера на клиент и т.д. Всё остаётся как в штатном режиме - количество файлов, название файлов. Только сами файлы внутри другие. И инициализация soapClient чуть изменится. Придётся биндинги и эндпойнты формировать в программном коде. У такого подхода есть как плюсы (больше возможностей) так и минусы (больше программировать). Для меня плюсы превысили минусы.
__________________
Дмитрий |
|
19.11.2019, 11:38 | #34 |
Участник
|
И для особо одаренных, если зависит от версии framework, то как система понимает, ей в приложение лезть или на сервер? Я этого понять не могу. Тут получается, что генерация проходит корректно, а обращение к dll нет.
__________________
Любую техническую проблему можно решить, если есть достаточно времени и денег. |
|
19.11.2019, 12:11 | #35 |
Участник
|
Подытожим немного.
При штатном формировании референсов (без поддержки 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 |
Участник
|
Цитата:
Сообщение от Damn
Ваш пример навёл меня на мысли, что возможно алгоритм поиска app.config зависит от конкретной версии Framework в Windows.
Например, если сгенерить dll на сервере с Framework 4.5, то app.config будет искаться в папке dll. А если сгенерить dll на сервере с версией 4.6+ , то app.config будет искаться в папке Bin. К сожалению, не могу проверить это. У меня минимальная версия фрэймворка на серверах - 4.7.
__________________
Любую техническую проблему можно решить, если есть достаточно времени и денег. |
|
19.11.2019, 14:54 | #37 |
Участник
|
Эксперимент должен заключаться не в пересадке dll. А в даунгрейде фрэймворка на больном сервере (4.6 -> 4.5). Не знаю возможна ли вообще такая процедура.
Или можно взять "здоровый" сервер и сделать ему апгрейд фрэймворка до 4.6. Чтобы "заразить" его ))
__________________
Дмитрий |
|
|
За это сообщение автора поблагодарили: demianimp (2). |
19.11.2019, 16:18 | #38 |
Участник
|
А в папке bin серверов файлы WebReferenceGenerator.config идентичны?
В частности флаг включения отладочной информации одинаковый? |
|
|
За это сообщение автора поблагодарили: demianimp (2). |
19.11.2019, 17:10 | #39 |
Участник
|
WebReferenceGenerator.config идентичны
__________________
Любую техническую проблему можно решить, если есть достаточно времени и денег. |
|
19.11.2019, 17:17 | #40 |
Участник
|
Цитата:
Что произошло, я не знаю
__________________
Любую техническую проблему можно решить, если есть достаточно времени и денег. |
|
Теги |
ax2009, ax2012, web service |
|
|