我收到以下错误

使用PrincipalContext获取域用户的信息时,“服务器名称不能包含空格字符”。

此代码在我的计算机上本地工作,但是在我将其加载到Intranet Web服务器上时会cra漏。

            //GET CURRENT USER
            String winUser = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
            string[] domainUsername = winUser.Split(Convert.ToChar(@"\"));

            // set up domain context
            PrincipalContext ctx = new PrincipalContext(ContextType.Domain, domainUsername[0]);

            // find a user
            UserPrincipal user = UserPrincipal.FindByIdentity(ctx, domainUsername[1]);

            return user;

最佳答案

对我来说,这是因为PrincipalContext的以下设置。

将应用程序池的身份从ApplicationPoolIdenity更改为LocalSystem之后,此问题得以解决。

这不是一个真正的解决方案,但可能会有所帮助。

PrincipalContext pc = new PrincipalContext((Environment.UserDomainName == Environment.MachineName ?
            ContextType.Machine : ContextType.Domain), Environment.UserDomainName);

10-08 00:59