web-dev-qa-db-ja.com

ASP.NET CoreのServicePointManager

既存のクラスライブラリコードを.NET Coreクラスライブラリに変換しようとしています。 staticコンストラクターのそのコードでは、次のようになります。

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

検索を行ったところ、ServicePointManagerは.NET Coreで使用できなくなりました。WinHttpHandlerを今すぐ使用する必要があります( 。net coreのServicePointManager.DefaultConnectionLimit? )。

私の質問は、ServicePointManagerとは正確には何であり、設定されているプロパティは何ですか?

WinHttpHandlerstaticではなくServicePointManagerではないので、これらのプロパティを設定するにはインスタンスを作成する必要がありますか?そのインスタンスを使用するには、すべてのhttp呼び出しを変更する必要がありますか?

17
developer82

WinHttpHandlerHttpMessageHandlerから継承するため、次のようにHttpClientを構築するときにパラメーターとして渡すことができます。

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

HttpClient client = new HttpClient(httpHandler);

お役に立てれば!

12
Juan Alvarez

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;

参照してください https://stackoverflow.com/a/44540071/4292717

5
Peter

次の名前空間を追加するだけです。

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;

ハッピーコーディング!!!

0
Murthy Veera