强制WebClient使用SSL

本文关键字:SSL 使用 WebClient 强制 | 更新日期: 2023-09-27 18:02:54

我看到这篇文章给出了使用WebClient上传文件到ftp的简单想法。这个很简单,但是我如何强制它使用SSL呢?

强制WebClient使用SSL

Edward Brey的答案可能会回答您的问题。我不提供我自己的答案,我只是抄Edward的话:


你可以使用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;
    }
}

一旦你这样做了,你就可以像平常一样使用WebRequest了,除了你的uri以"ftps://"而不是"ftp://"开头。需要注意的是,您必须指定该方法,因为不会有默认的方法。例如

// Note here that the second parameter can't be null.
webClient.UploadFileAsync(uploadUri, WebRequestMethods.Ftp.UploadFile, fileName, state);