Altiris directory connector fails with "System.Runtime.InteropServices.COMException caught"
Last Updated August 10, 2010
Altiris Directory Connector version 6.0.577 was installed and configured to import computer information and OU information from Active Directory.
After a number of weeks of operation, the system has stopped working, with the following error whenever the system tries to retrieve the directory information:
<event date='Jan 11 14:48:32' severity='1' hostName='server_name' source='Altiris.DirectoryServices.DirectoryExport.LDAPExporter.GetOrganizationalUnits' module='AltirisNativeHelper.dll' process='aspnet_wp.exe' pid='2784' thread='2796' tickCount='1766163703' >
<![CDATA[While getting OU list from <active directory source> System.Runtime.InteropServices.COMException caught in GetOrganizationalUnits. Reason: A local error has occurred ( Unhandled exception. Type=System.Runtime.InteropServices.COMException Msg=A local error has occurred Src=System.DirectoryServices
at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
at System.DirectoryServices.DirectorySearcher.FindAll(Boolean findMoreThanOne)
at Altiris.DirectoryServices.DirectoryExport.LDAPExporter.GetOrganizationalUnits(String strPath, String strUserId, String strPassword, Int64 nMaxUsnChanged, Boolean bUsnChanged, SearchScope searchScope, Int32& nOuCount) )]]>
<event date='Jan 11 15:00:44' severity='1' hostName='server_name' source='Altiris.DirectoryServices.DirectoryExport.LDAPExporter.GetRootDSE' module='AltirisNativeHelper.dll' process='aspnet_wp.exe' pid='2784' thread='3216' tickCount='1766895562' > <![CDATA[While getting RootDSE server.root.domain System.Runtime.InteropServices.COMException caught in GetRootDSE. Reason: A local error has occurred ( Unhandled exception. Type=System.Runtime.InteropServices.COMException Msg=A local error has occurred Src=System.DirectoryServices StackTrace= at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail) at System.DirectoryServices.DirectoryEntry.Bind() at System.DirectoryServices.DirectoryEntry.RefreshCache() at System.DirectoryServices.DirectoryEntry.FillCache(String propertyName) at System.DirectoryServices.KeysCollection.GetEnumerator() at Altiris.DirectoryServices.DirectoryExport.LDAPExporter.GetRootDSE(String strServer, String strUserId, String strPassword) )]]> </event>
The specific cause is not yet known, but the problem seems to be occuring on the Microsoft .NET System.DirectoryServices namespace. System.DirectoryServices provides .NET CLR interoperability functions with the ADSI API using COM.
A special version of the Altiris.DirectoryServices assembly (Altiris.DirectoryServices.dll) is available and attached to this article.
To install the .DLL into the Global Assembly Cache (aka GAC), you can simply drag and drop it there (the GAC is a virtual folder located under %windir%\assembly).
In a particular case this .DLL update did not resolve all of the issues seen with the AD Connector, but using the "aexconfig.exe /unconfigure <Active Directory Connector solution Guid> /deleteitems" from the Notification Server\bin folder made it possible to reinstall the solution and have it run successfully.
Customer is running Windows 2000 Server and Notification Server 6.0.5287 with Hotfix 19. Directory Connector 6.0.577 is installed. Another pair of Notification Servers are configured with the AD import working without fail.
Credentials used for the import where verify against the AD using MS wab.exe (WIndows Address Book) after configuring the Directory Service account.