背景: 我目前正在使用C#中的Dynamics AX 2009业务连接器。 对于我目前的项目,我需要连接到多个AOS服务器;理想情况下全部是并行的,尽管按顺序是足够的。我可以成功连接到一台服务器(任何服务器),但如果尝试连接到另一台服务器(甚至是同一台服务器,但使用null
作为默认连接而不是指定名称),总是会打到LogonSystemChangedException
。我甚至得到这个错误,如果我Logoff
和Dispose
前BC,设置变量引用它为空,让线程睡觉30秒,拨打GC.Collect()
(抱歉 - 绝望的时间),然后创建一个全新的BC看另一个实例的AX一起在一个新的变量。这表明MS的代码在后台保留了一些静态对象,这些静态对象在整个流程生命周期中保持这些信息。Dynamics AX 2009业务连接器登录
找到解决途径:
我发现使用LogonAs用正确的格式为这里的AOS实例一起的修复建议:http://asonofmartha.blogspot.co.uk/2010/06/ax-net-business-connector-how-to-open.html - 但没有运气尝试这样做。
我到目前为止发现的唯一的东西工作是为第二个连接创建第二个过程 - 但这是一个不愉快的解决方案。
为什么: 通过对实例的所有AOS服务器我用于连接到多个AOSes是我写它连接到一个给定的AX实例的CLR表函数,原因循环然后返回所有的列表客户&他们的SPIDS(只有当连接到该会话的AOS时才可见)。这是为了让我们的监控软件在我们看到数据库阻塞时返回有关AX用户会话的信息。
问: 有没有办法在同一进程内使用AX的.Net业务连接器(如果按顺序平行的是不可能的)连接到多个AOS?
谢谢Jan - 这是我目前的想法。我提出了几个问题来探讨如何最好地解决这个问题。明天,我将开始阅读解决方案,以确定哪些最有意义。目前子流程比服务感觉更好,因为这允许在运行时定义参数,而不必提前配置服务。 – JohnLBevan