C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■103736 / )  Re[1]: HttpClientにおいて、エラー発生
□投稿者/ WebSurfer (2957回)-(2025/06/19(Thu) 09:57:29)
No103735 (kiku さん) に返信

ハズレの可能性が高そうですが、エラーメッセージの、

> リモート名を解決できませんでした。: '●●'

から想像を膨らませて、名前解決の問題 ⇒ DNS の問題かもしれないということで
レスします。

Windows 10 では問題なく Windows 11 で問題が出るとか、短い期間で一日に数回
程度しか HttpClient は使わないであろう Windows Forms アプリで DNS の問題が
出るというのは考えにくいので、ハズレの可能性が高そうですが、ご参考まで。


HttpClient のインスタンスを生成すると、そのたびにソケットも生成されます。し
かし、HttpClient のインスタンスを Dispose してもソケットはクローズされない
ので、何度も繰り返すとソケットの枯渇につながるという問題がある・・・という
のはすでにご存じだと思います。

なので、それを避けるため、HttpClient のインスタンスはシングルトンにしてア
プリで使いまわすということを行っているのでないかと想像しています。

ただし、そうすると socket の枯渇の問題は解決できても、DNS の変更が反映され
ないという別の問題があるそうです。

ASP.NET など長時間実行されるプロセスで HttpClient の共有インスタンスを使用
する場合に、socket の枯渇と DNS の問題に対応するために、IHttpClientFactory
を使用するという方法があります。

IHttpClientFactory を使用して回復性のある HTTP 要求を実装する
https://learn.microsoft.com/ja-jp/dotnet/architecture/microservices/implement-resilient-applications/use-httpclientfactory-to-implement-resilient-http-requests

Windows Forms アプリで DI を使って IHttpClientFactory を inject して使う
サンプルは以下の記事にありますので、興味があれば見てください。

Windows Forms で IHttpClientFactory 利用 (CORE)
https://surferonwww.info/blogengine/post/2021/03/12/how-to-use-ihttpclientfactory-in-windows-forms-application.aspx

上のサンプルのターゲットフレームワークは .NET 5.0 ですが、DI に使われて
いる Microsoft.Extensions.DependencyInjection 名前空間にあるクラス類は
.NET Framework でもバージョン 4.6.1 以降であれば利用できます。実装例は
以下の記事を見てください。

.NET Framework での Dependency Injection
https://surferonwww.info/blogengine/post/2023/04/13/dependency-injection-for-dotnet-framework-48-applicationaspx.aspx
返信 編集キー/


管理者用

- Child Tree -