背景:目前,我正在与Dynamics AX 2009的业务接口工作在C#。 对于我目前的项目,我需要连接到多个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 - 但没有运气尝试这样做。
到目前为止,它的工作原理 ,我发现的唯一的事情是创造第二个连接的第二过程-但是这是一个不愉快的解决方案。
为什么:我用于连接到多个AOSes是我写它连接到一个给定的AX实例的CLR表函数,原因遍历所有AOS服务器上的该实例,然后返回所有客户和他们的SPIDS的列表(只有当可见连接到会话的AOS)。 这是为了让我们的监控软件来返回,当我们看到阻止对数据库的AX用户会话信息。
问:是否有办法在同一进程内使用AX的.Net业务连接器(如果按顺序平行的是不可能的)连接到多个AOS?