既存のクラスライブラリコードを.NET Coreクラスライブラリに変換しようとしています。 static
コンストラクターのそのコードでは、次のようになります。
ServicePointManager.DefaultConnectionLimit = 100;
ServicePointManager.Expect100Continue = false;
検索を行ったところ、ServicePointManager
は.NET Coreで使用できなくなりました。WinHttpHandler
を今すぐ使用する必要があります( 。net coreのServicePointManager.DefaultConnectionLimit? )。
私の質問は、ServicePointManager
とは正確には何であり、設定されているプロパティは何ですか?
WinHttpHandler
はstatic
ではなくServicePointManager
ではないので、これらのプロパティを設定するにはインスタンスを作成する必要がありますか?そのインスタンスを使用するには、すべてのhttp呼び出しを変更する必要がありますか?
WinHttpHandler
はHttpMessageHandler
から継承するため、次のようにHttpClient
を構築するときにパラメーターとして渡すことができます。
WinHttpHandler httpHandler = new WinHttpHandler();
httpHandler.SslProtocols = SslProtocols.Tls12;
HttpClient client = new HttpClient(httpHandler);
お役に立てれば!
ServicePointManagerは.NET Coreでv2.0から使用できます
Assembly System.Net.ServicePoint、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = cc7b13ffcd2ddd51
とは言っても、次の方法でHTTPクライアント呼び出しを実装しました。
System.Net.Http.HttpClientHandler handler; // use DI etc to create
if (options.SkipSsl) // config driven
handler.ServerCertificateCustomValidationCallback = (req, cer, ch, err) => true;
次の名前空間を追加するだけです。
using System.Net.Http;
using System.Net.Http.Headers;
次に、次のように行を変更します。
WinHttpHandler httpHandler = new
WinHttpHandler();
httpHandler.SslProtocols = SslProtocols.Tls12 | SslProtocols.Tls11 | SslProtocols.Tls;
の代わりに
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 |
SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
ハッピーコーディング!!!