Saltar al contenido

System.Net.WebException al usar WebClient: no se puede crear un canal seguro SSL/TLS

Hola, descubrimos la respuesta a lo que andabas buscando, deslízate y la encontrarás más abajo.

Solución:

Si cierra el violín (si lo tiene abierto) y agrega lo siguiente, la excepción debería desaparecer

ServicePointManager.Expect100Continue = true;                
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

O al menos lo hizo para mí cuando probé tu código así

try

     ServicePointManager.Expect100Continue = true;                
     ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

     ServicePointManager.ServerCertificateValidationCallback = delegate  return true; ;

     var webClient = new WebClient();

     var s = webClient.DownloadString("https://jtlplugins.x-volution.de/api.php?apikey=yS5VS7OiG1ukiIqLzCSYuFCjeF1qSskKOQeCtVxh&do=pruefe_app&cappid=123&chardwareid=DC0D-BFEA-6F79-58DE-21E9-BA3A-B288-C46F&clizenzschluessel=123");

     MessageBox.Show("Result" + s);

catch(Exception ex)
 
  MessageBox.Show(ex.Message); 

  • Advertencia de código inseguro: aunque asumo que ya sabe esto y no es por eso que recibió una WebException con su código, estoy agregando una advertencia para los futuros lectores potenciales en las décadas posteriores a la publicación original de esta pregunta. El código:

    System.Net.ServicePointManager.ServerCertificateValidationCallback = (remitente, certificado, cadena, errores) => volver true; ;

Ignorará cualquier error de validación del certificado y, por lo tanto, por definición, no es exactamente seguro. Consulte la pregunta C# ¿Ignorar errores de certificado?

A continuación se muestra una clase WebClient heredada que resuelve muchos problemas generales como este…

using System;
using System.Net;
namespace YourProgram.Web

    public class WebClient : System.Net.WebClient
    
        public WebClient()
        
            ServicePointManager.Expect100Continue = true;
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
            ServicePointManager.ServerCertificateValidationCallback = delegate  return true; ;
            this.container = new CookieContainer();
        
        public WebClient(CookieContainer container)
        
            this.container = container;
        

        public CookieContainer CookieContainer
        
            get  return container; 
            set  container = value; 
        

        private CookieContainer container = new CookieContainer();

        protected override WebRequest GetWebRequest(Uri address)
        
            WebRequest r = base.GetWebRequest(address);
            var request = r as HttpWebRequest;
            if (request != null)
            
                request.CookieContainer = container;
            
            return r;
        

        protected override WebResponse GetWebResponse(WebRequest request, IAsyncResult result)
        
            WebResponse response = base.GetWebResponse(request, result);
            ReadCookies(response);
            return response;
        

        protected override WebResponse GetWebResponse(WebRequest request)
        
            WebResponse response = base.GetWebResponse(request);
            ReadCookies(response);
            return response;
        

        private void ReadCookies(WebResponse r)
        
            var response = r as HttpWebResponse;
            if (response != null)
            
                CookieCollection cookies = response.Cookies;
                container.Add(cookies);
            
        
    

Disfrutar…

Al final de la web puedes encontrar las observaciones de otros usuarios, tú también puedes insertar el tuyo si te gusta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *