2

FTPサーバーからファイルを取得し、それをメモリに入れてHTTPS経由でクライアントに渡します。私はすべてが完璧に機能しています。ただし、SSLをオンにすると、次のエラーが発生します。

WebException:リモートサーバーがエラーを返しました:(500)構文エラー、コマンドが認識されません。]
System.Net.FtpWebRequest.SyncRequestCallback(Object obj)+330
System.Net.FtpWebRequest.RequestCallback(Object obj)+23
System.Net.CommandStream .InvokeRequestCallback(Object obj)+17
System.Net.CommandStream.Abort(Exception e)+168
System.Net.FtpWebRequest.FinishRequestStage(RequestStage stage)+454
System.Net.FtpWebRequest.GetResponse()+1398

これが私のコードです:

FtpWebRequest ftp = (FtpWebRequest)WebRequest.Create(@"ftp://" + serverName + ":21/" + fileName);
            ftp.Credentials = new NetworkCredential(userName, password);
            ftp.UseBinary = true;
            ftp.EnableSsl = true;
            ftp.Method = WebRequestMethods.Ftp.DownloadFile;
            FtpWebResponse response = null;
            response = (FtpWebResponse)ftp.GetResponse();

ftp.EnableSslをfalseに設定するか、コメントアウトするだけで、正常に機能します。私が間違っていることについてのアイデア。FTPサーバーに組み込まれているIISを使用しているWindowsXPProfessionalボックスを使用していることに注意してください。IISからデバッグしており、https://localhost/projectNameHere/default.aspxで実行しています。

4

1 に答える 1

1

サーバーを信頼している場合は、必要に応じて検証プロセスをオーバーライドできます。

ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);

public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
    System.Diagnostics.Debug.WriteLine(certificate);             
    return true;         
} 

接続とデータは引き続き安全です。ソースがなりすましである可能性があるため、ソースを信頼できない場合は、このコードを使用しないでください。

于 2012-01-04T15:15:19.543 に答える