c# - siguiente - qué datos se requieren para ingresar un equipo en un dominio de windows
¿Por qué no se puede contactar al servidor de Active Directory a través de PrincipalContext? (3)
Puedes probar el siguiente código.
public bool FindUser2(string userName)
{
try
{
DirectoryContext context = new DirectoryContext(
DirectoryContextType.Domain,
domainName,
domainName + @"/" + domainUserName,
domainPassword);
DirectoryEntry domainEntry = Domain.GetDomain(context).GetDirectoryEntry();
DirectorySearcher searcher = new DirectorySearcher(domainEntry,
"(|(objectCategory=user)(cn=" + domainUserName + "))");
SearchResult searchResult = searcher.FindOne();
return searchResult != null;
}
catch
{
return false;
}
}
Tengo problemas para acceder a Active Directory desde mi aplicación WinForm. Lo que quiero es crear un usuario y consultarlo desde Active Directory.
Aquí hay un fragmento de código para encontrar usuario:
public bool FindUser(string username)
{
using (PrincipalContext context = new PrincipalContext(
ContextType.Domain,
this.domainName,
this.DomainUserName,
this.DomainPassword))
{
UserPrincipal user = UserPrincipal.FindByIdentity(context, username);
return (user != null) ? true : false;
}
}
No puedo crear un objeto de PrincipalContext
basado en argumentos dados. Estoy recibiendo esta excepción:
Exception: The server could not be contacted.
y la excepción interna dice que,
Inner Exception: The LDAP server is unavailable.
donde como dominio se está ejecutando. Puedo hacer ping y también puedo conectarme a este dominio.
También puede considerar el uso de System.DirectoryServices.Protocols para acceder a otros dominios. Una curva de aprendizaje bastante empinada, pero mucho más rápida y flexible, por ejemplo, puede realizar búsquedas asincrónicas adecuadas.
Puedes usar el siguiente código:
objectPath = "LDAP://CN=SC-5515_2,OU=Forus,DC=**MyDomainName**,DC=no";
public static bool Exists(string objectPath)
{
return DirectoryEntry.Exists(objectPath);
}
Este es el código que he usado para esto. Funciona bien al probar si existen objetos en Active Directory.