It seems that Aspose.Ftp uses different local ports for each command it sends in PASV mode. Could you verify whether this is actually the case? Here's an example.
FTP Login using local port 2100
FTP Directory Listing using local port 2101
FTP Download file using local port 2102
FTP Close connection using local port 2100
It seems like all the commands above should be using local port 2100 and not passing a different local port to the ftp server for each command.
This could be complicated by the Threading that I have built around your FTP component.