Obecnie jestem w trakcie integracji z systemem utworzonym przez firmę zewnętrzną. Ten system wymaga ode mnie wysłania żądania za pomocą XML/HTTPS. 3rd Party wysłać mi certyfikat i zainstalować goProblemy z WebClient + HTTPS
używam następujący kod:
using (WebClient client = new WebClient())
{
client.Headers.Add(HttpRequestHeader.ContentType, "text/xml");
System.Text.ASCIIEncoding encoding=new System.Text.ASCIIEncoding();
var response = client.UploadData(address, "POST", encoding.GetBytes(msg));
}
Ten kod zwraca następujący WebException
:
Połączenie podstawowe zostało zamknięte: Nie można ustanowić relacja zaufania dla bezpiecznego kanału SSL/TLS.
UPDATE Ponieważ jest to serwer testowy pracuję przeciw, certyfikat nie jest zaufany i walidacja nie powiedzie ... Aby obejść ten w środowisku testowym/debugowania, tworzyć nowe ServerCertificateValidationCallback
ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback(bypassAllCertificateStuff);
i tu jest moje "fake" callback
private static bool bypassAllCertificateStuff(object sender, X509Certificate cert, X509Chain chain, System.Net.Security.SslPolicyErrors error)
{
return true;
}
+1 do aktualizacji z kodem używanym. Niezła szybka naprawa dla mnie z tego powodu. –
To było bardzo użyteczne zamiast rejestrowania root'a CA skrzypka w moim dev-machine podczas debugowania webservices SSL! Właśnie wstawiłem #if DEBUG wokół części, która dodała fałszywą funkcję oddzwaniania, aby nie wstawiać jej do kodu produkcyjnego. – jishi
Przejdź [tutaj.] (Http://forums.asp.net/p/1174025/1972251.aspx) – Lonzo