I've been investigating some DCOM problems on a multi-homed server system and it appears that in Windows 2000 the DUALSTRINGARRAY part of an object reference always begins with the domain host name of the server, followed by one or more IP addresses (more than one if the server is multi-homed). For example:
0x7 reeves.shooting.com 0x7 126.96.36.199 0x7 192.168.7.12
where the first address is the name of the server, the second address is that of the public NIC and the third is the address of the private NIC.
This causes problems on the system in question because the server is in a different Windows domain to the clients and the clients have no way of resolving the private host name of the server (the DNS servers could be configured to fix this but we have to assume a worst case scenario where the customer doesn't want to do this).
On Windows 98, NT4 and pre-SP3 Windows 2000 clients this results in a long delay connecting because the OXID resolver on the client processes the bindings sequentially: typically 15 to 20 seconds as the client unsuccessfully tries to use the first binding before connecting without any further delay using the second binding.
I must be missing something here because I don't understand why the host name binding is supplied. The IP address is also supplied so what extra benefit does the name provide? Without the name binding the client would connect without delay to the server and we wouldn't have a problem. Possibly because the IP address of the server might change during the lifetime of an object?
From SP3 onwards of Windows 2000 the problem does not exist anymore because the client's OXID resolver attempts concurrent calls on all the bindings. But unfortunately there are still a lot of people out there with Windows 98 and NT client machines.