Как правило, вы всегда должны вызывать Dispose
для типов, которые реализуют IDisposable
.И DirectoryEntry
, и DirectorySearcher
реализуют IDisposable
.В вашем примере кода удаляется только первый DirectoryEntry
объект.Вам также необходимо добавить блок использования для mySearcher
и directoryObject
:
Using entry As DirectoryEntry = New DirectoryEntry(connectionPrefix)
Using mySearcher = New DirectorySearcher(entry)
'...'
Using directoryObject = result.GetDirectoryEntry()
'...'
End Using
End Using
End Using
Вы можете немного уменьшить нагрузку на ваш сервер, не используя GetDirectoryEntry
, и вместо этого получить «отличительное имя»непосредственно из результатов поиска в сложенном виде (этот код не проверен, так как я в настоящее время не в домене):
mySearcher.PropertiesToLoad.Add("distinguishedName");
result = mySearcher.FindOne()
'...'
distinguishedName = result.Properties("distinguishedName")(0)