Ich verwende eine URL, um mithilfe von SOAP eine Verbindung zu einem Webdienst herzustellen. Anscheinend hat die URL kein korrektes https
Protokoll und wenn ich über den Browser darauf zugreifen möchte, muss ich das "Risiko" dieser Verbindung akzeptieren.HTTPS-Zertifikat überschreiben
Mein Problem beginnt, wenn ich programmgesteuert zugreifen möchte. Wenn ich versuche, eine SOAP POST
Anfrage zu senden, wird die Verbindung geschlossen und eine Ausnahme wird abgefangen.
"The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel."
Offenbar war dieses Problem häufig, und eine Menge von Ressourcen gefunden werden kann, this und this die upvoted werden.
Wenn ich diesen Teil des Codes versucht:
ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
nicht nur die Verbindung nicht funktioniert hat, aber jetzt bin ich ein gegeben:
"The remote server returned an error: (500) Internal Server Error."
Jetzt ist meine Frage. Der obige Code schaltet das Protokoll von https
zu http
?
Wenn nicht, was macht diese Codezeile wirklich?
„die Verbindung nicht funktioniert, aber jetzt bin ich ein gegeben: ‚Der Remoteserver hat einen Fehler zurückgegeben:. (500) Internal Error Server‘Eigentlich bedeutet dies die Verbindung _did_ Arbeit, aber dass der Remote-Server abgestürzt, während – ADyson
"Der obige Code schaltet das Protokoll von https auf http um?" Nein. Der Code bedeutet, dass der HTTP-Stack, der für Ihre Anfrage verwendet wird, alle Zertifikatsvalidierungsfehler ignoriert und die Anfrage einfach durchlässt. wie geschrieben, wird dies alle Anfragen an alle Hosts betreffen – spender
@spender Ich habe viele Verbindungen, aber sie sind alle mit dem gleichen Host, also muss ich mich nicht darum sorgen. Also im Grunde tut dieser Teil des Codes seinen Teil und ändert weder die URL noch die Verbindung in irgendeiner Art. Also ist entweder meine Anfrage nicht korrekt oder die Fernbedienung Server kann damit nicht umgehen? – Noel