Фон: В настоящее время я работаю с бизнес-коннектором Dynamics AX 2009 в C#. Для моего текущего проекта мне нужно подключиться к нескольким серверам AOS; в идеале все параллельно, хотя последовательно были бы адекватными. Я могу подключиться к одному серверу (любому серверу) успешно, но всегда ударяю LogonSystemChangedException
, если попытаюсь подключиться к другому серверу (или даже к тому же серверу, но с помощью null
для подключения к нему по умолчанию вместо указанного имени). Я даже получаю эту ошибку, если я Logoff
и Dispose
предыдущего BC, установите переменную, ссылающуюся на нее, на null, поставьте поток в сон на 30 секунд, вызовите GC.Collect()
(извините - отчаянные времена), затем создайте совершенно новый BC, смотрящий на другой экземпляр AX в целом в новой переменной. Это говорит о том, что код MS имеет некоторый статический объект за кулисами, который сохраняет эту информацию на протяжении всего процесса жизни.Dynamics AX 2009 Business Connector Logon
Найдено Предлагаемые решения:
Я нашел предложенное исправление использования LogonAs наряду с правильным форматированием для экземпляра AOS здесь: http://asonofmartha.blogspot.co.uk/2010/06/ax-net-business-connector-how-to-open.html - но попытался это не повезло.
Единственное, что я нашел до сих пор, что работает - это создать второй процесс для второго соединения - но это неприятное решение.
Почему: Моя причина для подключения к нескольким AOSes это я пишу табличную функцию CLR, который подключается к данному примеру AX, перебирает все серверы AOS на этом экземпляре, то возвращает список всех клиенты & их SPIDS (которые видны только при подключении к AOS этого сеанса). Это позволяет нашему программному обеспечению мониторинга возвращать информацию о сеансе пользователя AX, когда мы видим блокировку базы данных.
Вопрос: Есть ли способ подключения к нескольким AOS с помощью AX .NET Business Connector в рамках одного процесса (последовательно, если параллельно не возможно)?
Thanks Jan - это мое текущее мышление. Я поставил несколько вопросов, чтобы ловить рыбу за идеями о том, как лучше всего обойти эту проблему. Завтра я начну читать решения, чтобы определить, какие из них имеют наибольший смысл. В настоящее время подпроцессы чувствуют себя лучше, чем сервисы, поскольку это позволяет определять параметры во время выполнения, а не настраивать службы раньше времени. – JohnLBevan