gpt4 book ai didi

c# - 连接到 ftps ://URL

转载 作者:行者123 更新时间:2023-11-30 13:12:51 26 4
gpt4 key购买 nike

我正在尝试使用此代码将文件上传到 FTP,我遇到的问题是当语法遇到 serverURI.Scheme != Uri.UriSchemeFtp 时它返回 false。这是否意味着我的 URI 地址设置不正确?我知道这是一个有效地址,我已经使用 ftptest.net 来验证该站点是否已启动并正在运行。我的语法有什么不正确的地方?

private void button1_Click(object sender, EventArgs e)
{
Uri serverUri = new Uri("ftps://afjafaj.org");
string userName = "Ricard";
string password = "";
string filename = "C:\\Book1.xlsx";
ServicePointManager.ServerCertificateValidationCallback = AcceptAllCertificatePolicy;
UploadFile(serverUri, userName, password, filename);
}

public bool AcceptAllCertificatePolicy(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true;
}

public bool UploadFile(Uri serverUri, string userName, string password, string fileName)
{
if (serverUri.Scheme != Uri.UriSchemeFtp)
return false;

try
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverUri);
request.EnableSsl = true;
request.Credentials = new NetworkCredential(userName, password);
request.Method = WebRequestMethods.Ftp.UploadFile;
StreamReader sourceStream = new StreamReader(fileName);
byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
sourceStream.Close();
request.ContentLength = fileContents.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
requestStream.Close();

FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Console.WriteLine("Response status: {0}", response.StatusDescription);
}
catch (Exception exc)
{
throw exc;
}
return true;
}

最佳答案

ftps:// 前缀不是 standard IANA URI scheme .只有 ftp:// 方案,由 RFC 1738 定义.

无论如何,ftps:// 仍然被某些软件识别为指代基于 TLS/SSL 协议(protocol)的 FTP(安全 FTP)。这模仿了 https:// 方案,它是基于 TLS/SSL 的 HTTP(https:// 是标准方案)。

尽管 .NET 框架无法识别 ftps://

要通过 TLS/SSL 连接到 explicit 模式 FTP,请将 URI 更改为 ftp://,并设置 FtpWebRequest.EnableSsltrue(您已经在做的事情)。


请注意,ftps:// 前缀通常是指基于 TLS/SSL 的隐式 模式 FTP。 .NET 框架仅支持显式 模式。虽然即使您的 URI 确实引用了隐式 模式,但大多数服务器无论如何都会支持显式 模式。所以这通常不会成为问题。对于显式 模式,有时会使用ftpes://。查看我的文章以了解 FTP over TLS/SSL implicit and explicit modes 之间的区别.

关于c# - 连接到 ftps ://URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30082054/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com