Die zugrunde liegende Verbindung wurde geschlossen. Die server begangen protocol violation
Ich versuche, das Verzeichnis, Liste von FTPS in FileZilla-server mithilfe des folgenden Codes :
ftpRequest = (FtpWebRequest)FtpWebRequest.Create(host + "/" + directory);
ftpRequest.EnableSsl = true;
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateCertificate);
ftpRequest.Credentials = new NetworkCredential(user, pass);
ftpRequest.UseBinary = true;
ftpRequest.UsePassive = true;
ftpRequest.KeepAlive = true;
ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory;
ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
Bekam ich eine Ausnahme, wenn FtpWebResponse)ftpRequest.GetResponse()
ausgeführt wird :
die zugrunde liegende Verbindung wurde geschlossen. Der server verpflichtet, ein Protokoll
Verletzung.
Wenn ich den Schalter auf normalen FTP-Verbindung. Alles ordnungsgemäß funktioniert.
Habe ich da etwas verpasst zu etablieren, das FTPS-Verbindung ?
danke für die Hilfe
Sie haben Zugang zu den Filezilla Server ? Sind Sie sicher, dass das Zertifikat gültig ist ? Hast du Sie richtig konfigurieren, verwenden Sie explicit FTPS
Ja, ich habe Zugriff auf den server. Das Zertifikat ist auch gültig und das explizite FTPS aktiviert ist. Ich verwende den port 990 und bezieht sich auf implizites SSL/TLS-Verbindung. Es unterstützt in FtpWebRequest ?
Ja, ich habe Zugriff auf den server. Das Zertifikat ist auch gültig und das explizite FTPS aktiviert ist. Ich verwende den port 990 und bezieht sich auf implizites SSL/TLS-Verbindung. Es unterstützt in FtpWebRequest ?
InformationsquelleAutor MadNeox | 2014-10-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Implizite FTPS ist nicht unterstützt durch die
FtpWebRequest
Klasse (siehe hier).Wenn
EnableSsl
auf true gesetzt ist, ist es tatsächlich löst einAUTH TLS
- Befehl an den server zu Fragen, starten Sie eine Explizite FTPS Sitzung.In Ihrem Fall, müssen Sie konfigurieren, Filezilla Server zu verwenden, Explizite FTPS. Das Verfahren ist dokumentiert auf Filezilla Wiki
Sie können den FtpClient library.
Ich werde... vielen Dank nochmal für die Unterstützung und Hilfe. Habt einen schönen Tag !
InformationsquelleAutor Gabriel Boya
Habe ich hatte das gleiche problem, aber für das hochladen einer Datei, auf ftpWriter.Schließen().
Auch war ich nicht in der Lage zu tun, ein GetRequestStream nach einer erfolgreichen PrinWorkingDirectory zum Beispiel.
Das problem scheint zu sein, ein "Expect: 100-continue" in der post - während ich nicht ganz diese überprüft, das problem liegt irgendwo da.
Ich habe versucht, jede Lösung im internet gefunden : ändern Sie die KeepAlive-zu wahren, indem Sie die App.Config-Datei
Nichts hat wirklich funktioniert.
Ich habe verbringen eine Menge Zeit und versuchen, verschiedene andere Bibliotheken von Drittanbietern (Idee, ich wusste nicht, wie viel zu viel), bis schließlich kam ich auf einen code, der benutzt die gleichen Klassen und Methode, aber hat geklappt !!
Nach der Analyse der code, ich habe es endlich herausgefunden : der code richtet .NET Framework 2.0 während mein code wurde targeting .NET Framework 4.5.
Ich scheint, dass Microsoft hat einen kleinen Fehler beim übergang vom Framework 3.5 Framework 4.
Da es keine Lösung zu konvertieren Sie Ihre Projekte Ziel-einem alten Rahmen, können Sie eine dll erstellen, die für die FTP-Operationen, die auf die 3.5 .NET Framework, oder, Sie können die Verwendung von third-party-Bibliotheken.
Ich bin vielleicht ein bisschen spät, aber es wird wahrscheinlich helfen Sie anderen frustriert Entwickler zu dieser Sache, in die Zukunft.
Ob das ein bug im client, ich Frage mich, warum es scheint nur zu passieren, wenn eine Verbindung zu filezilla server? Mein code funktioniert gut mit anderen Servern
InformationsquelleAutor Marius-Lucian Dumitru