Moin,
ich benutze ja aktuell die Biko Library, um mit FTP(S) zu arbeiten.
Das funktioniert immer noch sehr gut, nur über TLS verschlüsselte Verbindungen machen Probleme, die zwar nicht immer, aber sehr oft auftauchen.
Da ich selbst den Source etwas modifiziert habe, um u. a. einen Progress einzubauen und das Exceptionhandling anzupassen, habe ich also jederzeit Zugriff auf diesen.
Wenn ich TLS aktiviere, wird von der Library der
Soweit so gut, wie gesagt, manchmal, aber jedoch ziemlich oft taucht dann die Meldung auf (ein Fehler ist es ja nicht wirklich, was ich gelesen habe):
In der Zeile beim
Das Problem ist jetzt, wie behebe ich das?
Ich werde noch verrückt, denn eine Einstellung, um es blockierend auszuführen, habe ich nicht direkt und die Methode so abzuändern (via ReferenceSource usw.), dass er das Ganze so macht, wäre viel zu umständlich bzw. ich weiß nicht, ob es überhaupt möglich wäre, zumal ich, wenn ich ehrlich bin, nicht mal wirklich weiß, warum dieser Fehler verursacht wird.
Kann mir jemand helfen, ich weiß grad nicht weiter, aber bei anderen Libraries geht es ja auch, nur kann ich die nicht nutzen, da diese entweder nicht alles besitzen, was ich beötige oder deren Architektur sehr umständlich und merkwürdig ist.
Ich kann also den Source frei verändern, müsste man das evtl. komplett anders angehen?
Danke im Voraus.
Grüße
ich benutze ja aktuell die Biko Library, um mit FTP(S) zu arbeiten.
Das funktioniert immer noch sehr gut, nur über TLS verschlüsselte Verbindungen machen Probleme, die zwar nicht immer, aber sehr oft auftauchen.
Da ich selbst den Source etwas modifiziert habe, um u. a. einen Progress einzubauen und das Exceptionhandling anzupassen, habe ich also jederzeit Zugriff auf diesen.
Wenn ich TLS aktiviere, wird von der Library der
NetworkStream
von TcpClient.GetStream()
an eine weitere Methode weitergegeben, die daraus dann einen SslStream
erstellt und zurückgibt. Dies macht sie einfach über einen SslStream
-Konstruktor, der einen innerStream
-Parameter hat:C#-Quellcode
- private Stream CreateSslStream(Stream stream)
- {
- SslStream ssl = new SslStream(stream, true, secureStream_ValidateServerCertificate, null);
- SslProtocols protocol = SslProtocols.None;
- switch (_securityProtocol)
- {
- case FtpSecurityProtocol.Tls1OrSsl3Explicit:
- case FtpSecurityProtocol.Tls1OrSsl3Implicit:
- protocol = SslProtocols.Default;
- break;
- case FtpSecurityProtocol.Ssl2Explicit:
- case FtpSecurityProtocol.Ssl2Implicit:
- protocol = SslProtocols.Ssl2;
- break;
- case FtpSecurityProtocol.Ssl3Explicit:
- case FtpSecurityProtocol.Ssl3Implicit:
- protocol = SslProtocols.Ssl3;
- break;
- case FtpSecurityProtocol.Tls1Explicit:
- case FtpSecurityProtocol.Tls1Implicit:
- protocol = SslProtocols.Tls;
- break;
- default:
- throw new FtpSecureConnectionException(String.Format("Unexpected FtpSecurityProtocol type '{0}'", _securityProtocol));
- }
- // Hier taucht der Fehler manchmal auf
- ssl.AuthenticateAsClient(_host, _clientCertificates, protocol, true);
- return ssl;
- }
Soweit so gut, wie gesagt, manchmal, aber jedoch ziemlich oft taucht dann die Meldung auf (ein Fehler ist es ja nicht wirklich, was ich gelesen habe):
Ein nicht blockierender Socketvorgang konnte nicht sofort ausgeführt werden
In der Zeile beim
ssl.AuthenticateAsClient
.Das Problem ist jetzt, wie behebe ich das?
Ich werde noch verrückt, denn eine Einstellung, um es blockierend auszuführen, habe ich nicht direkt und die Methode so abzuändern (via ReferenceSource usw.), dass er das Ganze so macht, wäre viel zu umständlich bzw. ich weiß nicht, ob es überhaupt möglich wäre, zumal ich, wenn ich ehrlich bin, nicht mal wirklich weiß, warum dieser Fehler verursacht wird.
Kann mir jemand helfen, ich weiß grad nicht weiter, aber bei anderen Libraries geht es ja auch, nur kann ich die nicht nutzen, da diese entweder nicht alles besitzen, was ich beötige oder deren Architektur sehr umständlich und merkwürdig ist.
Ich kann also den Source frei verändern, müsste man das evtl. komplett anders angehen?
Danke im Voraus.
Grüße
#define for for(int z=0;z<2;++z)for // Have fun!
Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose!
Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da
Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose!
Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Trade“ () aus folgendem Grund: Tags eingefügt