mercredi 24 janvier 2018

Prendre en compte TLS 1.2 en ASP.NET

Si vous rencontrez cette erreur :

The underlying connection was closed: An unexpected error occurred on a receive.

en essayant de faire un paiement PayPal avec ce code : 

WebRequest request = WebRequest.Create("https://api-3t.paypal.com/nvp");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = postData.ToString().Length;
var sw = new StreamWriter(request.GetRequestStream());
sw.Write(postData.ToString());
sw.Close();

WebResponse response = request.GetResponse();

(pour le code complet d'un paiement PayPal en asp.net voir cet article : http://ghislainmesse.blogspot.fr/2016/07/integrer-le-paiement-paypal-dans-un.html)

C'est que votre serveur ne prend pas en compte TLS 1.2.

Soit vous installez asp.net 4.5 ou supérieur, soit vous ajoutez cette ligne en début de code :

protected void Page_Load(object sender, EventArgs e)
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
        ….
}

P.S. : ne pas oublier d'ajouter cette clause dans l'entête du code : using System.Net;