2

.NetのWebClientクラスを使用して既に作成されたプロジェクトがあります。FTPおよびWebDAVリソースには最適ですが、SCPまたはSFTPで機能させるにはどうすればよいですか?

4

2 に答える 2

1

.Net フレームワークには組み込みの SCP サポートは含まれていません。SharpSSHを試してください。

FtpWebRequestクラスは EnableSsl プロパティを設定することでFTPESサポートしますが、WebClient はそれを公開しないため、FtpWebRequest を直接使用する必要があります。

于 2009-10-09T00:32:21.370 に答える
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;
    }
}

これを行うと、URI が「ftp://」ではなく「ftps://」で始まることを除いて、通常とほぼ同じように WebRequest を使用できます。1 つの注意点は、デフォルトのメソッドがないため、メソッドを指定する必要があることです。例えば

// Note here that the second parameter can't be null.
webClient.UploadFileAsync(uploadUri, WebRequestMethods.Ftp.UploadFile, fileName, state);
于 2011-08-11T04:19:46.087 に答える