Как получить файл по FTP через прокси-сервер squid, используя. NET Core (FtpWebRequest)? - PullRequest
1 голос
/ 27 января 2020

Согласно https://docs.microsoft.com/en-us/dotnet/api/system.net.ftpwebrequest.proxy?view=netcore-3.1 FtpWebRequest не поддерживает прокси с. NET Core. Есть ли альтернатива?

Мне нужно получить доступ к файлу FTP через некоторый прокси-сервер squid (то есть FTP через HTTP) с аутентификацией прокси (NTLM).

Это пример кода:

FtpWebRequest request = (FtpWebRequest) WebRequest.Create("ftp://ftp.ubuntu.com/");
var proxy = new WebProxy("my.squid.host", 8080);
proxy.Credentials = new NetworkCredential("squid_user", "squid_pass");
request.Proxy = proxy;
WebResponse response = request.GetResponse();

var result = new StreamReader(response.GetResponseStream()).ReadToEnd();
Console.WriteLine(result);

Если вы замените squid host / user / pass в этом коде на ваш, вы увидите, что это прекрасно работает с этим файлом csproj:

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net472</TargetFramework>
      </PropertyGroup>
</Project>

Но он больше не работает. NET Ядро:

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp3.1</TargetFramework>
      </PropertyGroup>
</Project>

1 Ответ

2 голосов
/ 27 января 2020

Нет другой реализации FTP в. NET, чем FtpWebRequest. И FtpWebRequest сам по себе устарел и не будет улучшен. Вы должны использовать стороннюю библиотеку FTP-клиента.

См .:

Возможно, вы можете использовать FluentFTP . Хотя он не поддерживает аутентификацию NTLM (это требование вы добавили позже). Я не знаю ни одной другой широко используемой бесплатной библиотеки. NET FTP.

...