背景:
我目前正在使用 C# 中的 Dynamics AX 2009 Business Connector。对于我当前的项目,我需要连接到多个 AOS 服务器;理想情况下所有并行,尽管顺序就足够了。我可以成功连接到一台服务器(任何服务器),但LogonSystemChangedException
如果我尝试连接到另一台服务器(甚至是同一台服务器,但使用null
默认连接而不是指定名称),总是会点击。如果我Logoff
和Dispose
之前的 BC,我什至会得到这个错误,将引用它的变量设置为 null,让线程休眠 30 秒,调用GC.Collect()
(对不起 - 绝望的时候)然后创建一个全新的 BC,在一个新变量中完全查看 AX 的不同实例。这表明 MS 的代码在幕后有一些静态对象,这些对象在整个进程生命周期中保留了这些信息。
找到建议的解决方案:
我在这里找到了使用 LogonAs 的建议修复方法以及 AOS 实例的正确格式:http: //asonofmartha.blogspot.co.uk/2010/06/ax-net-business-connector-how-to-open.html - 但没有运气尝试过。
到目前为止,我发现的唯一可行的方法是为第二个连接创建第二个进程 - 但这是一个令人不快的解决方案。
原因: 我连接到多个 AOS 的原因是我正在编写一个 CLR 表函数,它连接到给定的 AX 实例,遍历该实例上的所有 AOS 服务器,然后返回所有客户端及其 SPIDS 的列表(仅在连接到该会话的 AOS)。这是为了让我们的监控软件在我们看到数据库阻塞时返回有关 AX 用户会话的信息。
问题: 有没有办法在同一进程中使用 AX .Net Business Connector 连接到多个 AOS(如果无法并行,则依次连接)?