This error is quite common and may occur for a variety of different reasons. The most obvious cause is that the server you were trying to contact might actually be down, it may be blocked by a network firewall, or it might not exist at all. However, given that there is a variety of different ways to specify a server to use with ADSI, there are many other ways this error may be generated.
Chapter 3 is where you will find most of the information about binding to the directory. If you are not specifying a server name at all in your binding string, check out the section titled Serverless Binding to Active Directory. If you are specifying some other information about the server in the binding string, the material on server name syntaxes is the place to start.
If you are trying to bind to a server using secure sockets layer, there are some additional things to know. Refer to the sidebar titled Troubleshooting Binds with SecureSocketsLayer, in Chapter 3.
Part I: Fundamentals
Introduction to LDAP and Active Directory
Introduction to .NET Directory Services Programming
Binding and CRUD Operations with DirectoryEntry
Searching with the DirectorySearcher
Advanced LDAP Searches
Reading and Writing LDAP Attributes
Active Directory and ADAM Schema
Security in Directory Services Programming
Introduction to the ActiveDirectory Namespace
Part II: Practical Applications
Part III: Appendixes
Appendix A. Three Approaches to COM Interop with ADSI
Appendix B. LDAP Tools for Programmers
Appendix C. Troubleshooting and Help