FTP is not a firewall-friendly protocol. It predates the Internet era where firewalls were common, so assumes it's perfectly oK for both sides of a conversation to open ports with each other. The COMMAND channel, which is what you open when you connect to an FTP server, is a connection you initiate between you and the server. The DATA channel, what you use to download stuff, is a connection initiated by the FTP Server to you. What's worse, the port your FTP chooses to present is a random high port so configuring your firewall to allow the right ports is tricky.
This is why they created "Passive" mode in the FTP protocol. This is the PASV verb. This tells the FTP server to reverse the initiation direction of the DATA channel; it gives the client the high port to connect to, the client initiates the connection, and the server feeds data over that connection. Much easier to firewall.
For .NET's libraries, you'll probably get better luck setting the UsePassive property to True.