首页 > 解决方案 > 使用特定域控制器从 Dynamics AX 读取 Active Directory 中的用户信息

问题描述

我们有一些域控制器可用于读取 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实现相同的功能?

标签: axaptadynamics-ax-2012-r3domaincontroller

解决方案


我们不在您的网络上,因此我们无法真正测试所有内容,但是如果xAxaptaUserManager内核类不起作用,但是您可以在...中执行此操作C#...只需创建一个程序集“助手”,您就可以来自 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


推荐阅读