veces tengo la siguiente excepción: objeto COM que se ha separado de su RCW subyacente no puede ser utilizadoEl objeto COM que se ha separado de su RCW subyacente no se puede usar, ¿por qué ocurre?
Código de ejemplo:
using (AdOrganizationalUnit organizationalUnit = new AdOrganizationalUnit(ADHelper.GetDirectoryEntry(ouAdDn)))
{
using (AdUser user = organizationalUnit.AddUser(commonName))
{
//set some properties
user.Properties[key].Add(value);
user.CommitChanges();
user.SetPassword(password); //it is set using Invoke
//must be set after creating user
user.Properties["UserAccountControl"].Value = 512;
user.CommitChanges();
}
}
ADUser se ve así:
public class AdUser : DirectoryEntry
{
public AdUser(DirectoryEntry entry)
: base(entry.NativeObject)
{
}
public bool SetPassword(string password)
{
object result = this.Invoke("SetPassword", new object[] { password });
return true;
}
}
Esta es una versión simplificada de mi código. La excepción a veces aparece, a veces no. La mayoría de las veces sucede cuando intento establecer el valor UserAccountControl. ¿Alguien sabe cuál podría ser el motivo?
descubrí que este error ocurre cuando dispongo DirectoryEntry la ADUser fue creado con y todavía estoy tratando de utilizar el objeto ADUser. Sin embargo, este no es el caso en el código publicado anteriormente. ¿Es posible que DirectoryEntry de alguna manera se deshaga?
También consigo esta excepción cuando intento ejecutar la operación en muchos objetos de Active Directory. Por ejemplo, cuando intento configurar SecurityDescriptor para mil usuarios, obtengo este error cada 200-300 usuarios. Cuando intento volver a operar después de establecer nuevas conexiones, no obtengo ninguna excepción. El mensaje es raceonrcwcleanup fue detectado. Mi aplicación no es multiproceso.
Cualquier ayuda sería apreciada.
** + 1 ** para resolver su propia pregunta, publicar la solución y, lo que es más importante, resolver exactamente el mismo problema por el que vine aquí. –