Dynamics AX 2009的商业连接器登录(Dynamics AX 2009 Business

2019-10-18 14:11发布

背景:目前,我正在与Dynamics AX 2009的业务接口工作在C#。 对于我目前的项目,我需要连接到多个AOS服务器; 理想的全部并行顺序虽然是足够的。 我可以连接到一台服务器(任何服务器)成功,但总是打了LogonSystemChangedException如果我尝试连接到另一台服务器(甚至是在同一台服务器,但使用null连接到它的默认,而不是通过指定的名称)。 我甚至得到这个错误,如果我LogoffDispose以前的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?

Answer 1:

前一段时间我面临这个问题并没有得到解决。 我问MS通过我的雇主服务计划,似乎.NET BC存储某种未被释放,直到整个过程结束连接的数据缓存。 这是没有计划改变,因为.NET BC打算在下一版中完全停用。

我所做的就是开发撞上了一个AOS服务,然后运行该服务的三个实例,从AOS他们每个人的gattering信息SQL表,在那里我能得到巩固的所有信息。

希望这可以帮助。



Answer 2:

既然你想反正并行,为什么不去为子流程?

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

Estavan已经回答了你的问题的说明。



文章来源: Dynamics AX 2009 Business Connector Logon