2012-06-07 3 views
1

У нас возникают проблемы с использованием активного каталога и перемещением/переименованием подразделений. Это происходит только при репликации между двумя контроллерами домена. Исключением является:Проблемы с репликацией с Active Directory и несколькими контроллерами домена

System.ServiceModel.FaultException: на сервере такого объекта нет. (Исключение из HRESULT: 0x80072030)

Мы получаем варианты этого сообщения об ошибке при попытке переместить и переименовать подразделение в активном каталоге. Вот код, о котором идет речь:

PrincipalContext context = GetPrincipalContext(); 

using (UserPrincipal principal = UserPrincipal.FindByIdentity(context, IdentityType.Guid, id.ToString())) 
{ 
    if (principal == null) 
    { 
     throw new InvalidOperationException(); 
    } 

    string oldEmail = principal.EmailAddress; 

    principal.EmailAddress = newEmail; 
    principal.Save(); 

    DirectoryEntry entry = principal.GetUnderlyingObject() as DirectoryEntry; 
    DirectoryEntry targetDirectoryEntry = null; 
    string target = null; 

    // Access the underlying DirectoryEntry to rename it: 
    try 
    { 
     if (entry == null) 
     { 
      throw new InvalidOperationException(); 
     } 

     entry.RefreshCache(); 
     entry.Rename(string.Format("CN={0}", newEmail)); 

     // Move the DirectoryEntry to the correct location. 
     target = BuildOrganizationalUnitName(newEmail); 

     targetDirectoryEntry = FindDirectoryEntry(target); 
     if (targetDirectoryEntry == null) 
     { 
      throw new InvalidOperationException(); 
     } 
     entry.MoveTo(targetDirectoryEntry); 
     entry.CommitChanges(); 
    } 
    catch (Exception e) 
    { 
     // do some logging 
    } 
    finally 
    { 
     if (entry != null) 
     { 
      entry.Dispose(); 
     } 

     if (targetDirectoryEntry != null) 
     { 
      targetDirectoryEntry.Dispose(); 
     } 
    } 
} 

Поэтому у меня есть два вопроса:

  1. есть все, что случилось с выше код, который пытается перемещать и переименовывать подразделение?
  2. Если нет, есть ли способ обеспечить синхронизацию двух контроллеров постоянного тока после перемещения/переименования?

ответ

0

Прежде чем пытаться переместить его, вы, вероятно, должны внести изменения в переименование.

entry.Rename(string.Format("CN={0}", newEmail)); 
entry.CommitChanges(); // add this line 
Смежные вопросы