【发布时间】:2020-05-12 16:36:50
【问题描述】:
根据https://docs.microsoft.com/en-us/dotnet/api/system.net.ftpwebrequest.proxy?view=netcore-3.1 FtpWebRequest 不支持.NET Core 代理。有其他选择吗?
我需要通过带有代理身份验证 (NTLM) 的 squid 代理(即 FTP over HTTP)访问 FTP 文件。
这是示例代码:
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 Core:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
</Project>
【问题讨论】:
标签: c# .net-core proxy ftp squid