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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.01.2017, 18:18   #1  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
DAX 2009 не ждет выполнения .NET кода
DAX 2009. Подключена сборка .NET 3.5 (зарегистрирована в GAC).

Часть функционала сборки - это отправка данных на веб-сервер и возврат ответа (операция длится пару секунд).

X++:
...
if(!crm.GetCrmStatus())
{
    info('Server offline');
}
else
{
    info('Server online');
}
...
Данный метод возвращает bool значение, но АХ игнорирует его результат. В дебаггере выполнение доходит до этой строчки и просто обрывается, ошибок никаких нету, код после этой строчки не выполняется. Другие методы сборки, которые тоже возвращают bool значение, но не соединяются с сервером (само собой отрабатывают моментально) работают как положено.

Как заставить АХ ждать завершения операции и выполнить оставшийся код?

Последний раз редактировалось syl; 12.01.2017 в 18:24.
Старый 12.01.2017, 18:26   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Похоже какое то исключение вылетает но не ловится аксаптой.
Попробуйте хотя бы в целях диагностики сделать свою сборку - обертку над указанной в которой ловите все исключения. Тогда можно понять что там не так.
Старый 12.01.2017, 18:32   #3  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
У меня рядом с аксаптой лежит консольное приложение которое использует ту же сборку, оно работает нормально.

Внутри сборки все ошибки отлавливаются, при любом исключении должен вернуться результат...

Дело в том что сама операция выполняется синхронно и достаточно долго (установка соединения длится порядка 3-5 секунд). Но АХ просто прекращает выполнение...
Старый 12.01.2017, 19:10   #4  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
.NET-код не обязан вам вернуть то исключение, которое вы ожидаете.
Если код в АХ прерывается, значит исключение все-таки имеет место.
.NET вернет вам целую кучу необработанных исключений. И если в вашем консольном приложении все выглядит хорошо, в АХ появляются подводные камни, о которых вы и не догадываетесь.
Когда-то сделал себе метод для АХ4, который выводит исключения .NET в инфолог.
X++:
public void clrWarning()
{
    Microsoft.Dynamics.BusinessConnectorNet.BusinessConnectorException  lastException;
    ;

    lastException = ClrInterop::getLastException();
    while(lastException)
    {
        warning(lastException.get_Message());
        lastException = lastException.get_InnerException();
    }
}
P.S. Ваш код в Аксапте должен быть обернут критической секцией, наподобие такой:
X++:
try
{
    new InteropPermission(InteropKind::ClrInterop).assert();
    // ...
    CodeAccessPermission::revertAssert();
}
catch (Exception::CLRError)
{
    this.clrWarning();
}
__________________
// no comments
За это сообщение автора поблагодарили: Logger (1), syl (1).
Старый 12.01.2017, 19:18   #5  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
Так и сделал, нашел ошибку, не видело одну из зависимостей сборки. Добавил ее в GAC, теперь другая проблема, из Job'а все работает нормально, а из batch'а - та же ошибка...
Старый 12.01.2017, 19:32   #6  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Регистрация: 10.10.2013
Цитата:
Сообщение от syl Посмотреть сообщение
Так и сделал, нашел ошибку, не видело одну из зависимостей сборки. Добавил ее в GAC, теперь другая проблема, из Job'а все работает нормально, а из batch'а - та же ошибка...
Попробуйте запустить job из меню.
В меню указать тип запуска сервер.
За это сообщение автора поблагодарили: syl (1).
Старый 12.01.2017, 19:57   #7  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
Цитата:
Сообщение от demianimp Посмотреть сообщение
Попробуйте запустить job из меню.
В меню указать тип запуска сервер.
Попробовал, ошибка. Как заставить сервер нормально работать с этими сборками?
Старый 12.01.2017, 22:20   #8  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от syl Посмотреть сообщение
Попробовал, ошибка. Как заставить сервер нормально работать с этими сборками?
Ну на сервере то сборка у вас, надеюсь, стоит ?
Старый 13.01.2017, 13:05   #9  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
Цитата:
Сообщение от Logger Посмотреть сообщение
Ну на сервере то сборка у вас, надеюсь, стоит ?
Ну я на сервере ее и регистрировал, там и работаю...
Старый 13.01.2017, 14:44   #10  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Как это вы прямо на сервере работаете?
Если у вас 2-звенка, проблем вообще не возникнет.
Сформулируем по-другому вопрос. Сборка у вас стоит там же, где AOS крутится?
__________________
// no comments
Старый 14.01.2017, 02:57   #11  
MazZzDaI is offline
MazZzDaI
Участник
Аватар для MazZzDaI
 
44 / 35 (2) +++
Регистрация: 19.09.2013
Проблема может быть в приведении типа System.Boolean к boolean.
Проверьте конструкцию:
X++:
boolean ret;
ret = crm.GetCrmStatus();
if(! ret)
{
    :(
}
else
{
    :)
}
Старый 18.01.2017, 13:01   #12  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
Цитата:
Сообщение от dech Посмотреть сообщение
Как это вы прямо на сервере работаете?
Если у вас 2-звенка, проблем вообще не возникнет.
Сформулируем по-другому вопрос. Сборка у вас стоит там же, где AOS крутится?
Да. Там же
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Prabhats: DAX 2009 Enterprise Portal Development : Using the Ax Session Blog bot DAX Blogs 0 05.09.2015 02:34
Prabhats: DAX 2009 Enterprise Portal Development : Using the Ax Session Blog bot DAX Blogs 0 12.07.2015 16:17
fed: Net requirements update in MRP Module and Working Set of MRP Blog bot DAX Blogs 14 08.05.2012 13:09
msdynamicsax: Enterprise Portal development in DAX 2009 Blog bot DAX Blogs 0 18.04.2008 07:06

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

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

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