web-dev-qa-db-fra.com

ServicePointManager dans ASP.NET Core

J'essaie de convertir un code de bibliothèque de classes existant en une bibliothèque de classes .NET Core. Dans ce code dans un constructeur static, j'ai ce qui suit:

ServicePointManager.DefaultConnectionLimit = 100;
ServicePointManager.Expect100Continue = false;

J'ai fait quelques recherches et ServicePointManager n'est plus disponible dans .NET Core, et WinHttpHandler devrait être utilisé maintenant ( ServicePointManager.DefaultConnectionLimit dans .net core? ).

Ma question est quelle est exactement la ServicePointManager et quelles sont les propriétés qui sont définies?

WinHttpHandler n'est pas static comme ServicePointManager donc je devrais créer une instance pour définir ces propriétés? dois-je changer tous mes appels http pour utiliser cette instance?

17
developer82

WinHttpHandler hérite de HttpMessageHandler, vous pouvez donc le passer comme paramètre lors de la construction de votre HttpClient comme suit:

WinHttpHandler httpHandler = new WinHttpHandler();
httpHandler.SslProtocols = SslProtocols.Tls12;

HttpClient client = new HttpClient(httpHandler);

J'espère que cela t'aides!

12
Juan Alvarez

ServicePointManager est disponible dans .NET Core à partir de la version 2.0

Assembly System.Net.ServicePoint, Version = 4.0.0.0, Culture = neutre, PublicKeyToken = cc7b13ffcd2ddd51

Cela dit, j'ai implémenté mes appels client HTTP en utilisant:

System.Net.Http.HttpClientHandler handler;  // use DI etc to create 
if (options.SkipSsl)  // config driven
    handler.ServerCertificateCustomValidationCallback = (req, cer, ch, err) => true;

Voir https://stackoverflow.com/a/44540071/4292717

5
Peter

Ajoutez simplement les espaces de noms suivants:

using System.Net.Http;

using System.Net.Http.Headers;

puis changez votre ligne comme ci-dessous,

WinHttpHandler httpHandler = new 
WinHttpHandler();

httpHandler.SslProtocols = SslProtocols.Tls12 | SslProtocols.Tls11 | SslProtocols.Tls;

au lieu de

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | 
SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;

Joyeux codage !!!

0
Murthy Veera