Cosa succede se non disponiamo mai HttpClient, .Net C #?

1

Sto lavorando su un servizio Windows. Il servizio di codice di Windows è molto semplice ma ha un modo strano!
Nel servizio Windows dovrei chiamare un WebApi ogni 20 secondi e salvare il risultato in un database SQL Sto utilizzando autofac per creare l'istanza di HttpClient a Program.cs

// HttpClient
builder.Register(ctx =>
{
    var httpClient = new HttpClient
    {
        BaseAddress = new Uri(StaticAssets.WebApiBaseAddress)
    };
    httpClient.DefaultRequestHeaders.Accept.Clear();
    httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    return httpClient;
});

Non dispongo mai manualmente l'istanza httpClient .
Dopo aver eseguito il servizio Windows per circa 8 ore, IIS non funziona e non possiamo più eseguire il remote server, abbiamo testato Windows Remote Desktop Connection, VNC (abbiamo VNC sul server) ...
Potremmo remotare sul server con KVM e interrompere il servizio Windows e ogni cosa tornerà indietro. Penso che questo problema sia correlato all'istanza httpClient .
Hai già visto il problema? Come hai potuto risolverlo?

    
posta Mohammad Dayyan 18.07.2018 - 06:30
fonte

2 risposte

3

HttpClient è purtroppo usa e getta ma non avrebbe dovuto essere. Il tuo problema è probabilmente dovuto a windows in esecuzione di connessioni o a limite di connessione per il gestore dei punti di servizio

In ogni caso la soluzione è semplicemente rendere l'istanza statica. Questo non è ovvio poiché l'interfaccia è monouso.

    
risposta data 18.07.2018 - 07:02
fonte
2

Se ne hai solo uno? nulla.

Se ne crei uno nuovo per richiesta, ti imbatterai in problemi poiché ognuno consuma una porta aperta. Anche se dovresti verificare se il tuo framework DI ne dispone automaticamente

Se ne crei uno nuovo per richiesta E lo smaltisci, ti imbatterai anche in problemi poiché il dispose in realtà non libera la porta aperta

link

    
risposta data 18.07.2018 - 14:10
fonte

Leggi altre domande sui tag