【问题标题】:scp on WebClient class in .Net.Net 中 WebClient 类上的 scp
【发布时间】:2010-12-05 04:54:19
【问题描述】:

我已经使用 .Net 的 WebClient 类编写了一个项目。它适用于 FTP 和 WebDAV 资源,但我怎样才能让它与 SCP 或 SFTP 一起使用?

【问题讨论】:

    标签: c# .net webclient scp


    【解决方案1】:

    .Net 框架不包含内置的 SCP 支持;试试SharpSSH

    FtpWebRequest 类通过设置 EnableSsl 属性来支持 FTPES,但 WebClient 不公开它,因此您必须直接使用 FtpWebRequest。

    【讨论】:

      【解决方案2】:

      您可以通过注册自己的前缀使 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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-03-29
        • 1970-01-01
        • 1970-01-01
        • 2014-06-19
        • 1970-01-01
        • 1970-01-01
        • 2011-02-22
        相关资源
        最近更新 更多