699 messaggi dal 18 febbraio 2002
www.dimsolutions.it
Ho implementato il Recaptcha V2 di Google su varie pagine (Contatti, Preventivo ecc.)
Saltuariamente la richiesta non va a buon fine con il seguente errore:

The request was aborted: Could not create SSL/TLS secure channel.
Message: The request was aborted: Could not create SSL/TLS secure channel.


Il bello è che magari ricaricando la pagina va a buon fine senza problemi.

Il codice della chiamata a Google è il seguente:
            bool Valid = false;

            try
            {
                ServicePointManager.Expect100Continue = true;
                ServicePointManager.DefaultConnectionLimit = 9999;
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; // Solve Problem Could not create SSL/TLS secure channel

                //Request to Google Server
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://www.google.com/recaptcha/api/siteverify?secret=" + chiaveSegreta + "&response=" + Response);                

                //Google recaptcha Responce 
                using (WebResponse wResponse = req.GetResponse())
                {
                    using (StreamReader readStream = new StreamReader(wResponse.GetResponseStream()))
                    {
                        string jsonResponse = readStream.ReadToEnd();

                        JavaScriptSerializer js = new JavaScriptSerializer();
                        MyObject data = js.Deserialize<MyObject>(jsonResponse);// Deserialize Json 

                        Valid = Convert.ToBoolean(data.success);
                    }
                }

                return Valid;
            }
            catch (WebException ex)
            {
                // scrivo log
                Log.CreateLogFiles();
                Log.ErrorLog("Errore ValidateRecaptcha - Descrizione: " + ex.Message);

                throw ex;
            }


Sul server è presente SSL di Let's Encrypt attivo correttamente sul dominio.

A cosa può essere dovuto?
Grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
Penso che si possa escludere Let's Encrypt dalle possibili cause. Infatti, il problema si verifica nella connessione tra la macchina in cui si trova l'applicazione e il server di Google.

È strano che il problema si verifichi saltuariamente, comunque, puoi provare questo:
  • Prova ad usare HttpClient anziché WebRequest.
    var handler = new HttpClientHandler
    {
      SslProtocols = SslProtocols.Tls12,
    };
    
    using (var httpClient = new HttpClient(handler))
    {
      try
      {
        var response = await httpClient.GetAsync("https://www.google.com/recaptcha/api/siteverify?secret=" + chiaveSegreta + "&response=" + Response);
        //...
      }
      catch (Exception exc)
      {
        //...
      }
    }
    
  • Se non funziona lo stesso, puoi provare a ripetere la richiesta più volte finché non ha successo. Ad esempio per massimo 3-5 tentativi. Eventualmente puoi usare Polly per questo oppure ti costruisci tu un ciclo while.


ciao,
Moreno

Enjoy learning and just keep making
699 messaggi dal 18 febbraio 2002
www.dimsolutions.it
Sembra abbia risolto inserendo un loop fino a 5 tentativi.
Grazie!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.