Mon application se connecte au serveur Experian et Experian cessera bientôt de prendre en charge TLS 1.0 et TLS 1.1. Toute connectivité utilisant HTTPS doit utiliser TLS version 1.2.
Je veux faire quelques recherches sur ce problème et voir l'envoi de HttpWebRequest
à l'aide de TLS 1.2 sur .NET 4.0 Framework fonctionne
Si ce n'est pas le cas, je devrai probablement créer un webservice
sur .NET 4.5 et appeler ses méthodes. Si c'est le cas, je n'ai rien à faire.
Quelqu'un a-t-il déjà affronté ce problème?
Oui, il le prend en charge mais vous devez définir explicitement la version TLS sur le ServicePointManager
. Il suffit d'exécuter ce code à tout moment (dans le même domaine d'application) avant d'appeler Experian:
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12
voir réponse de @ iignatov pour ce que vous devez faire pour Framework v4.0. Mon code fonctionne avec 4.5+
J'ai dû faire face au même problème, tout en intégrant Paypal dans une application existante, et j'ai trouvé la solution de contournement suivante pour .NET 4.0 qui semble faire l'affaire:
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
ServicePointManager.DefaultConnectionLimit = 9999;
En gros, la solution consiste à attribuer directement le port à TLS 1.2.
Tout le mérite revient au commentateur à CodeProject .
La traduction VB.NET de réponse de iignatov :
ServicePointManager.Expect100Continue = True
ServicePointManager.SecurityProtocol = CType(3072, SecurityProtocolType)
ServicePointManager.DefaultConnectionLimit = 9999
FrameWork 4.0 ne prend pas en charge TLS 1.1 ou 1.2. Toutefois, vous pouvez résoudre ce problème en téléchargeant Rebex.Http à partir du gestionnaire Nuget.
Rebex.Licensing.Key = "..."; //Lisans Number
var creator = new HttpRequestCreator();
creator.Register();
WebRequest request = WebRequest.Create("https://www.test.com");
request.Method = "POST";
request.Headers.Add("utsToken", txtToken.Text);
request.ContentType = "application/json";
request.Method = "POST";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
string json = "{\"VRG\":\"test\"}";
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
var httpResponse = (WebResponse)request.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
txtSonuc.Text += result;
}
Malheureusement non, vous ne pouvez pas faire cela. Tls12 n'a pas été ajouté avant .netfx 4.5 (voir la documentation ). Notez que cela nécessite également que Windows Server 2008 R2 + ou Windows 7+ fonctionne correctement (remarquez la section S'applique à sur Présentation de TLS ).