使用特定域控制器从Dynamics AX读取Active Directory中的用户信息

时间:2019-07-10 20:04:43

标签: axapta dynamics-ax-2012-r3 domaincontroller

我们有一些域控制器可用于读取AD用户信息。

将域名"mydomain.co.uk"用作AD域时,将选择这几个域控制器中的任何一个来实现此目的。

但是,如果尚未在所有域控制器中传播AD中的更改,则不会返回任何结果。

为解决此问题,我决定始终指向一个特定的域控制器,即"dc1.mydomain.co.uk"

在C#中,可以轻松完成以下操作:

new PrincipalContext(ContextType.Domain, 
                    "dc1.mydomain.co.uk:389", 
                    "OU=Groups,DC=mydomain,DC=co,DC=uk", 
                    domainUsername, 
                    domainPassword)

但是在X ++中,只有"mydomain.co.uk"可以工作:

static void validateDomain(Args _args)
{
    xAxaptaUserManager          Axmanage;
    NetworkDomain               networkDomain = "";

    // Works
    networkDomain = "mydomain.co.uk";

    // Does not work
    networkDomain = "dc1";
    networkDomain = "dc1.mydomain.co.uk";
    networkDomain = "dc1.mydomain.co.uk:389";
    networkDomain = "LDAP://dc1.mydomain.co.uk:389/";

    Axmanage = new xAxaptaUserManager();

    info(strFmt("%1", Axmanage.validateDomain(networkDomain)));
}

如果可能的话,如何使用MS Dynamics AX 2012 R3中的 xAxaptaUserManager 实现相同的功能?

2 个答案:

答案 0 :(得分:2)

我们不在您的网络上,因此我们无法真正测试所有内容,但是如果xAxaptaUserManager(这是一个内核类)不起作用,但是您可以在{{1}中进行操作} ...只需创建一个从AX调用的程序集“帮助器”即可。

请参阅以下链接:

https://docs.microsoft.com/en-us/dynamicsax-2012/developer/how-to-add-a-reference-to-a-net-assembly

https://docs.microsoft.com/en-us/dynamicsax-2012/developer/net-interop-from-x

答案 1 :(得分:1)

我之前应该已经说过这一点,您可能更愿意将此作为解决方案。

AX中,您可以仅调用.NET代码。我认为您可能必须立即将其放入serverclass的{​​{1}}方法中。

table