Вы можете заставить WebClient работать с FTP / SSL (но не с SFTP), зарегистрировав свой собственный префикс:
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;
}
}
Как только вы сделаете это, вы можете использовать WebRequest почти как обычно, за исключением того, что ваши URI начинаются с «ftps: //» вместо «ftp: //». Единственное предостережение заключается в том, что вы должны указать метод, поскольку по умолчанию его не будет. Э.Г.
// Note here that the second parameter can't be null.
webClient.UploadFileAsync(uploadUri, WebRequestMethods.Ftp.UploadFile, fileName, state);