scp для класса WebClient в .Net - PullRequest
       17

scp для класса WebClient в .Net

2 голосов
/ 09 октября 2009

У меня уже есть проект, написанный с использованием класса .Net WebClient. Он отлично работает для ресурсов FTP и WebDAV, но как мне заставить его работать с SCP или SFTP?

Ответы [ 2 ]

1 голос
/ 11 августа 2011

Вы можете заставить 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);
1 голос
/ 09 октября 2009

.NET Framework не содержит встроенной поддержки SCP; попробуйте SharpSSH .

Класс FtpWebRequest поддерживает FTPES, устанавливая свойство EnableSsl , но WebClient не предоставляет его, поэтому вам придется напрямую использовать FtpWebRequest.

...