HttpClient nicht selbst erzeugen
- Matt
Der Klassiker mit zwei falschen Antworten. Ein new HttpClient() pro Aufruf lässt Verbindungen im Zustand TIME_WAIT zurück und erschöpft unter Last die Ports. Ein statischer HttpClient behebt das, bekommt aber DNS-Änderungen nie mit, was beim Umschalten eines Endpunkts unangenehm auffällt.
Die dritte Antwort:
builder.Services.AddHttpClient<KundenApi>(c =>
{
c.BaseAddress = new Uri("https://api.example.com/");
c.Timeout = TimeSpan.FromSeconds(10);
});
Die Factory verwaltet einen Pool von Handlern, rotiert sie nach zwei Minuten und löst damit beide Probleme. Der typisierte Client bekommt seinen HttpClient im Konstruktor und wird ganz normal per DI aufgelöst.
Passend dazu die Sache mit dem Timeout, der anders wirkt, als man denkt.