Dynamics AX 2009 Business Connector登录

时间:2013-08-28 18:00:45

标签: c# axapta x++ dynamics-ax-2009 business-connector

背景 我目前正在使用C#中的Dynamics AX 2009 Business Connector。 对于我目前的项目,我需要连接到多个AOS服务器;理想情况下,所有并行,但顺序是足够的。我可以成功连接到一台服务器(任何服务器),但如果我尝试连接到不同的服务器(甚至是同一台服务器,但使用LogonSystemChangedException连接到默认设备,则总是点击null由指定的名称)。如果我LogoffDispose之前的BC,我甚至会得到此错误,将引用它的变量设置为null,让线程休眠30秒,调用GC.Collect()(抱歉 - 绝望的时候然后创建一个全新的BC,在一个新变量中完全查看AX的不同实例。这表明MS的代码在幕后有一些静态对象,这些对象在整个流程生命周期中都会持续存在。

找到建议的解决方案:

为什么: 我连接多个AOS的原因是我正在编写一个连接到给定AX实例的CLR表函数,循环遍历该实例上的所有AOS服务器,然后返回所有客户端的列表&他们的SPIDS(仅在连接到该会话的AOS时才可见)。这是为了让我们的监控软件在我们看到数据库阻塞时返回有关AX用户会话的信息。

问题: 有没有办法在同一过程中使用AX .Net Business Connector连接到多个AOS(顺序如果并行不可能)?

2 个答案:

答案 0 :(得分:3)

前段时间我遇到了这个问题并没有得到解决方案。我通过我的雇主服务计划询问了MS,似乎.NET BC存储了某种连接数据的缓存,直到整个流程结束才会释放。这不打算改变,因为.NET BC将在下一个版本中完全弃用。

我所做的是开发一个针对AOS运行的服务,然后运行该服务的三个实例,每个实例都从AOS向SQL表中提取信息,在那里我可以获得所有合并的信息。

希望这有帮助。

答案 1 :(得分:1)

既然你想要并行性,为什么不去寻找子流程?

为实例的每个AOS服务器分叉一个子进程,在同一个共享管道(或类似管道)上收集答案,直到文件结束,然后等待子进程死亡,这应该是突出的,因为它们全部关闭输出。

Estavan已经回答了你提出的问题。