为了账号安全,请及时绑定邮箱和手机立即绑定

C#中的FTPS(基于SSL的FTP)

C#中的FTPS(基于SSL的FTP)

至尊宝的传说 2019-11-02 10:49:00
我需要一些指导。我需要在C#中开发一个可自定义的FTP,应使用App.Config文件对其进行配置。另外,FTP应该再次将数据从任何客户端推送到任何服务器,具体取决于配置文件。如果有人可以提供指导,是否有任何API或任何其他有用的建议,或者向正确的方向发展,我将不胜感激。
查看完整描述

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);

}


查看完整回答
反对 回复 2019-11-02
?
杨魅力

TA贡献1811条经验 获得超6个赞

要自动接受客户端可能遇到的任何证书,此方法有效:ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;

查看完整回答
反对 回复 2019-11-02
  • 3 回答
  • 0 关注
  • 1384 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信