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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.06.2014, 18:24   #1  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,158 / 1286 (47) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Вызов из PowerShell Net Connector происходит только по одной конфигурации
Пытаюсь в одном сеансе PowerShell подключиться под разными конфигурациями, делаю нечто подобное (показано в упрощенном виде).
Код:
[Reflection.Assembly]::LoadWithPartialName('Microsoft.Dynamics.BusinessConnectorNet')
$axcFile1 = 'c\test\config1.axc'
$axcFile2 = 'c\test\config2.axc'
$ax = New-Object Microsoft.Dynamics.BusinessConnectorNet.Axapta 
$ax.Logon('', '', '', $axcFile1)	
$ax.Logoff()
$ax.Logon('', '', '', $axcFile2)	
$ax.Logoff()
Первое подключение проходит, второе выдает исключение, причем без текста исключения.
если опять сделать
Код:
$ax.Logon('', '', '', $axcFile1)
то подключение выполняется. И так пока не закроешь сессию PowerShell. Открываешь новую опять то же самое. Если поменять местами вызовы, то тогда по второй конфигурации все открывается, а по первой перестает.
Переменную $ax между вызовами и просто приравнивал к $null и чистил при помощи Remove-Variable aх ничего не помогает.
Попробовал сделать похожие вызовы в программе на C#, там вызовы в одной сессии по разным конфигурациям работают.
Что нужно сделать в PowerShell чтобы он "забыл", что ранее уже был вызов с первой конфигурацией?
Старый 19.06.2014, 08:56   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,427 / 1771 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
А можно перед вторым подключением заново проинициализировать $ax?
Код:
$ax = New-Object Microsoft.Dynamics.BusinessConnectorNet.Axapta
За это сообщение автора поблагодарили: Raven Melancholic (1).
Старый 19.06.2014, 10:12   #3  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,158 / 1286 (47) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Да, конечно, пробовал и пересоздавать объект, тем более, что после обнуления переменной это приходилось делать в любом случае.
А вот с тестом на C# был не прав. В коде была ошибка и вызывалось подключение всегда с одной конфигурацией. Когда поправил появилась та же самая проблема.
В общем, думаю что при первом подключении загружается сессия с типом сеанса "Рабочий". После этого из того же приложения подключения идут с типом сеанса "Business Connector Proxy" но только в том случае, если с того же приложения "Рабочий" та же конфигурация, что для новых подключений. А сессия "Рабочий" висит до выхода из создавшего её приложения.
Можно ли как-нибудь завершить эту сессию "Рабочий"?
Старый 19.06.2014, 17:36   #4  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Во времена COM Business Connector у него был метод Shutdown(), который как раз обрывал окончательно соединение с Аксаптой. У .NET BC такого метода нет, но можно попробовать принудительно выгружать сборку после использования, для чего создавать под нее отдельный AppDomain. Примеры можно найти, скажем, здесь: http://stackoverflow.com/questions/1...nal-assemblies
За это сообщение автора поблагодарили: Raven Melancholic (5).
Старый 19.06.2014, 20:40   #5  
b_nosoff is offline
b_nosoff
Читатель
Аватар для b_nosoff
MCP
MCBMSS
 
197 / 143 (5) +++++
Регистрация: 01.12.2004
Адрес: Msk
Записей в блоге: 13
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Переменную $ax между вызовами и просто приравнивал к $null и чистил при помощи Remove-Variable aх ничего не помогает.
Dispose тоже не помогает?

Edit: Не помогает Dispose. Да и AppDomain вряд ли поможет. .NET Business Connector ведь просто обертка над неуправляемым ядром, вот, похоже, это ядро в памяти и остается, а при создании нового объекта Axapta Business Connector просто переподключается к нему.
__________________
Axapta non erubescit

Последний раз редактировалось b_nosoff; 19.06.2014 в 22:31.
За это сообщение автора поблагодарили: Raven Melancholic (2).
Старый 20.06.2014, 13:25   #6  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,158 / 1286 (47) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Хотя чтобы не терять время уже реализовал все без коннектора, но тема с доменами заинтересовала.
Попробую в выходные на C# это замутить (так как пока глянул только одним глазом и не очень представляю как это в PowerShell сделать). Если сработает, буду думать про PowerShell.
Старый 20.06.2014, 16:40   #7  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,158 / 1286 (47) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Без доменов получилось.
Просто из одного сеанса PowerShell вызываю сам PowerShell со скриптом, которому передаю параметры.
Жутко выглядит, но работает.
За это сообщение автора поблагодарили: Logger (3).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Axapta 2009 напрямую из ASP.NET Narayana DAX: Программирование 17 15.05.2013 19:00
goshoom: Parsing XML files with .NET Interop Blog bot DAX Blogs 0 07.05.2013 12:11
bojensen: Sending mail from AX using .NET Framework Blog bot DAX Blogs 0 13.02.2013 03:12
jinx: Microsoft Dynamics AX - X++ und .NET (CLR) Arrays Blog bot DAX auf Deutsch 0 03.03.2009 03:08
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 16:15.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.