- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我实现了我的自定义 FTP 类以与我付费购买的托管服务器一起使用。我使用 FTP 备份、恢复和更新我的应用程序。我现在想要启用 ssl 以将其投入生产。我问过我的托管公司是否支持 ssl 协议(protocol),他们说支持。
所以我在 Microsoft MSDN 教程之后修改了我的方法,如下所示:
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(m_ftpAddress.Trim()));
reqFTP.UseBinary = true;
reqFTP.Credentials = new NetworkCredential(m_ftpUsername, m_ftpPassword);
reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(ValidateServerCertificate);
X509Certificate cert = new X509Certificate(path to a certificate created with makecert.exe);
reqFTP.ClientCertificates.Add(cert);
reqFTP.AuthenticationLevel = AuthenticationLevel.MutualAuthRequested;
reqFTP.ImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Identification;
reqFTP.EnableSsl = true;
现在,MSDN 表示,如果服务器支持 ssl 协议(protocol),则在使用 AUTH TLS 询问时不会抛出异常。这可以在跟踪日志中看到。所以我想这不是服务器问题。
在认证阶段之后,服务器返回一个
System.Net Information: 0 : [0216] FtpControlStream#41622463 - Received response [227 Entering Passive Mode (the IP and port number).]
触发错误的消息:
System.Net Error: 0 : [0216] Exception in the FtpWebRequest#12547953::GetResponse - The remote server returned an error: 227 Entering Passive Mode (the IP and port number).
我试过设置
reqFTP.UsePassive = true;
属性为 false 然后我得到这个错误:
System.Net Information: 0 : [2692] FtpControlStream#4878312 - Received response [500 Illegal PORT command]
当然,如果没有将 EnableSLL 属性设置为 true,则一切正常。
有没有人对此有任何想法?
编辑:我修改了代码作为休闲:
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(m_ftpAddress.Trim()));
reqFTP.UseBinary = true;
reqFTP.Credentials = new NetworkCredential(m_ftpUsername, m_ftpPassword);
reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
ServicePointManager.ServerCertificateValidationCallback = new
System.Net.Security.RemoteCertificateValidationCallback(ValidateServerCertificate);
reqFTP.ClientCertificates.Add(cert);
reqFTP.AuthenticationLevel = AuthenticationLevel.MutualAuthRequested;
reqFTP.ImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Identification
reqFTP.EnableSsl = true;
ValidateServerCertificate
始终返回 true。这样修改后效果就没有了。
我不明白:
有人可以解释一下这是如何工作的吗?
编辑:在与托管公司交换了许多电子邮件后,发现他们的 FTP 软件有问题,但代码没有问题。
最佳答案
您是否检查过您的主机使用的是 FTPS 还是 SFTP?
它们是不同的协议(protocol),您的主机可能认为您说的是错误的协议(protocol)。
关于c# - 带有 EnableSSL 的 FtpWebRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1608038/
我收到“远程证书根据验证程序无效”异常消息,代码如下: ServicePointManager.ServerCertificateValidationCallback = new RemoteCert
如果我更改 EnableSSL=false,我收到错误消息“SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应是:5.7.0 必须先发出 STARTTLS 命令。u78sm8177860p
我实现了我的自定义 FTP 类以与我付费购买的托管服务器一起使用。我使用 FTP 备份、恢复和更新我的应用程序。我现在想要启用 ssl 以将其投入生产。我问过我的托管公司是否支持 ssl 协议(pro
我们已经运行了一段时间的新系统进行测试,并将电子邮件创建到一个文件夹中,这样他们就不会意外地发送给客户。现在我们打开了实时电子邮件发送,我们遇到了发送问题。 我正在使用 ActionMailer.NE
如果我们只是在 c# ftpWebrequest 代码中设置 EnableSsl=true,这是否意味着正在完成安全的 ftp。或者在 iis6.0 中执行安全 ftp 的正确方法是什么。请建议 最佳
我在我的 MVC 网站中使用 ActionMailer.Net 发送电子邮件,我想从 gmail 发送,但 gmail 需要 EnableSsl=True 才能发送,但我不知道我可以在 ActionM
如标题所述,将“SmtpClient::EnableSsl”设置为 true 的“System::Net::Mail::SmtpClient”需要哪些端口? documentation on the
我是一名优秀的程序员,十分优秀!