Özel FTP sınıfımı, ödediğim barındırılan bir sunucuyla çalışmak üzere uyguladı. Uygulamamın yedeklenmesi, geri yüklenmesi ve güncellenmesi için FTP'yi kullanıyorum. Şu an üretimde kullanması için ssl'yi etkinleştirmek istediğim andayım. Hosting şirketime ssl protokolünü destekleyip desteklemediklerini sordum ve yaptıkları söyledi.EnableSSL ile FtpWebRequest
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;
Şimdi, MSDN sunucu ssl protokolünü destekliyorsa AUTH TLS ile sorulduğunda o atmak ve istisna olmayacağını söylüyor:
Yani böyle bir şey için, Microsoft MSDN öğretici sonra Metotlarımı güncellenmiştir. Bu, izleme günlüğünde görülebilir. Bu yüzden bir sunucu sorunu olmadığını varsayalım. Sonra olsunBen falseSystem.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;
özelliğini ayarlayarak çalıştı
ve:
kimlik aşamasından sonra sunucu bir hata tetikleyen bir
System.Net Information: 0 : [0216] FtpControlStream#41622463 - Received response [227 Entering Passive Mode (the IP and port number).]
iletisi döndürür Bu hata:
System.Net Information: 0 : [2692] FtpControlStream#4878312 - Received response [500 Illegal PORT command]
Elbette, EnableSLL özelliği true olarak ayarlanmadığında, her şey sorunsuz çalışır.
Bu konuda herhangi bir fikri olan var mı?
Düzenleme:
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
hep gerçek döndürür: Ben Taksonların kod güncellenmiştir. Bu değişikliklerden sonra etki hiçbiri değildir.
Ve anlamıyorum: Bu anda
- uygulama doğru, sunucu sertifikası kullanıyor?
- Ve modifikasyonlar benimki kullanmadan önce mi?
Birisi bunun nasıl çalıştığını açıklayabilir mi?
Düzenleme: Birçok e-posta barındırma şirketiyle değiş tokuş ettikten sonra, onların FTP yazılımı ile ilgili sorunları olduğu ortaya çıktı ve bu kodla ilgili bir sorun değildi.
Düzenlemenizi yanıt olarak gönderin ve kabul edin. –