我们有一些域控制器可用于读取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 实现相同的功能?
答案 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
代码。我认为您可能必须立即将其放入server
或class
的{{1}}方法中。
table