use*_*140 3 c# ftp ssl ftps ftpwebrequest
我正在尝试使用此代码将文件上传到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;
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*ryl 17
该ftps://前缀是不是一个标准的IANA URI方案.RFC 1738ftp://定义了唯一的方案.
无论如何,ftps://某些软件仍然认为它指的是FTP over TLS/SSL协议(安全FTP).这种模仿https://方案是HTTP over TLS/SSL(https://是标准方案).
虽然ftps://.NET框架无法识别.
要通过TLS/SSL 连接到显式模式FTP,请将您的URI更改为ftp://,并设置FtpWebRequest.EnableSsl为true(您已经在做什么).
请注意,ftps://前缀通常是指通过TLS/SSL 的隐式模式FTP..NET框架仅支持显式模式.虽然你的URI确实是指隐式模式,但大多数服务器都支持显式模式.所以这通常不会成为问题.对于显式模式,ftpes://有时使用.请参阅我的文章,了解FTP over TLS/SSL隐式和显式模式之间的区别.
| 归档时间: |
|
| 查看次数: |
6371 次 |
| 最近记录: |