С# Не могу скачать файл с ftp

Всем привет. Не получается скачать файл с ftp. Опыта c ftp у меня нет.
Вот этот файл нужен ftp://ftp.nasdaqtrader.com/symboldirectory/nasdaqtraded.txt
Пробовал через HtthClient пишет ошибку, что только http/https запросы.
Пробовал через FtpWebRequest (хотя и указано, что это устаревшая библиотека), через нее выдает ошибку "Удаленный сервер возвратил ошибку: (503) Сервер не доступен"
Логин/пароль не нужен. Через ftp-клиент файл качается.

В чем может быть проблема?

FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftp.nasdaqtrader.com/symboldirectory/nasdaqtraded.txt");

request.Method = WebRequestMethods.Ftp.DownloadFile;

FtpWebResponse response = (FtpWebResponse)request.GetResponse();

Stream responseStream = response.GetResponseStream();
          
FileStream fs = new FileStream(@"c:\1.txt", FileMode.Create);

byte[] buffer = new byte[64];
int size = 0;

while ((size = responseStream.Read(buffer, 0, buffer.Length)) > 0)
{
    fs.Write(buffer, 0, size);

}
fs.Close();
response.Close();

Ответы (1 шт):

Автор решения: Oopss

Классы WebRequest, WebClient и ServicePoint были добавлены в .NET Core версии 2.0 для обеспечения обратной совместимости. Однако эти классы внесли несколько критических изменений в среду выполнения, например, WebRequest.GetRequestStream выделяет память для всего ответа, а WebClient.CancelAsync не всегда выполняет немедленную отмену.

Начиная с .NET 6, классы WebRequest, WebClient и ServicePoint являются устаревшими. Классы по-прежнему доступны, но использовать их при разработке не рекомендуется.

Для FTP, поскольку он не поддерживается HttpClient, рекомендуется использовать стороннюю библиотеку.

FluentFTP предоставляет расширенные возможности, включая поддержку FTP и FTPS (FTP с SSL/TLS), а также обширный набор операций с файлами и каталогами. Обеспечивает лучшую поддержку безопасности, включая различные режимы SSL/TLS, что критично для защиты данных при передаче по FTP. Соответствует рекомендациям Microsoft.

using FluentFTP;
class Program
{
    static void Main()
    {
        using (var client = new FtpClient("ftp.nasdaqtrader.com"))
        {
            client.Connect();
            client.DownloadFile("d:/tt1/1.txt", "symboldirectory/nasdaqtraded.txt");
            client.Disconnect();
        }
    }
}

Nasdaq Traded|Symbol|Security Name|Listing Exchange|Market Category|ETF|Round Lot Size|Test Issue|Financial Status|CQS Symbol|NASDAQ Symbol|NextShares
Y|A|Agilent Technologies, Inc. Common Stock|N| |N|100|N||A|A|N
Y|AA|Alcoa Corporation Common Stock |N| |N|100|N||AA|AA|N
Y|AAA|Alternative Access First Priority CLO Bond ETF|P| |Y|100|N||AAA|AAA|N
Y|AAAU|Goldman Sachs Physical Gold ETF Shares|Z| |Y|100|N||AAAU|AAAU|N
 ...
→ Ссылка