我已经使用 .Net 的 WebClient 类编写了一个项目。它适用于 FTP 和 WebDAV 资源,但我怎样才能让它与 SCP 或 SFTP 一起使用?
问问题
1420 次
2 回答
1
您可以通过注册自己的前缀使 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);
于 2011-08-11T04:19:46.087 回答
1
.Net 框架不包含内置的 SCP 支持;尝试SharpSSH。
FtpWebRequest类通过设置EnableSsl属性来支持 FTPES,但 WebClient 不会公开它,因此您必须直接使用 FtpWebRequest。
于 2009-10-09T00:32:21.370 回答