【问题标题】:ASP.NET Unable to Enable SSL using FtpWebRequest class without getting errorsASP.NET 无法使用 FtpWebRequest 类启用 SSL 而不会出现错误
【发布时间】:2011-07-27 17:56:04
【问题描述】:

我正在从我们的 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(异常 e)+168
System.Net.FtpWebRequest.FinishRequestStage(RequestStage 阶段) +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 或只是将其注释掉,它就可以正常工作。关于我做错了什么的任何想法。请记住,我在使用 IIS 内置 FTP 服务器的 Windows XP Professional 机器上。我正在从 IIS 调试,我在 https://localhost/projectNameHere/default.aspx 下运行。

【问题讨论】:

    标签: c# asp.net ssl c#-2.0 ftpwebrequest


    【解决方案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;         
    } 
    

    您的连接和数据仍然是安全的。如果您不信任来源,则不应使用此代码,因为来源可能是冒名顶替者。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多