3 回答
TA贡献1862条经验 获得超6个赞
您可以使用FtpWebRequest ; 但是,这是相当低的水平。有一个更高级别的类WebClient,在许多情况下它需要更少的代码。但是,默认情况下它不支持FTP / SSL。幸运的是,您可以WebClient通过注册自己的前缀来使用FTP / SSL:
private void RegisterFtps()
{
WebRequest.RegisterPrefix("ftps", new FtpsWebRequestCreator());
}
private sealed class FtpsWebRequestCreator : IWebRequestCreate
{
public WebRequest Create(Uri uri)
{
FtpWebRequest webRequest = (FtpWebRequest)WebRequest.Create(uri.AbsoluteUri.Remove(3, 1)); // Removes the "s" in "ftps://".
webRequest.EnableSsl = true;
return webRequest;
}
}
完成此操作后,WebClient几乎可以像平常一样使用,除了您的URI以“ ftps://”而不是“ ftp://”开头。一个警告是您必须指定该method参数,因为将没有默认值。例如
using (var webClient = new WebClient()) {
// Note here that the second parameter can't be null.
webClient.UploadFileAsync(uploadUri, WebRequestMethods.Ftp.UploadFile, fileName, state);
}
TA贡献1811条经验 获得超6个赞
要自动接受客户端可能遇到的任何证书,此方法有效:ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;
- 3 回答
- 0 关注
- 1384 浏览
添加回答
举报