111 messaggi dal 07 novembre 2007
Salve
una domanda come esistono in MVC i filter che intercettano le chiamate, volevo sapere ma ci sta qualche modo per acchiappare una chiamata REST con HttpClient a livello globale (ovviamente su un progeto Asp.Net MVC)?
Grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,


ci sta qualche modo per acchiappare una chiamata REST con HttpClient a livello globale

Sì, l'oggetto HttpClient può essere costruito fornendo una tua implementazione di HttpMessageHandler, che userai per loggare le richieste in uscita. Ecco il costruttore in questione:
https://msdn.microsoft.com/en-us/library/hh193664(v=vs.118).aspx

Usalo così:
var client = new HttpClient(new TracingHttpClientHandler());


Dove TracingHttpClientHandler è una classe che ti crei tu in questo modo:
public class TracingHttpClientHandler : HttpClientHandler
    {
        protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            Debug.WriteLine($"Inviata ichiesta {request.Method} a {request.RequestUri}");
            return base.SendAsync(request, cancellationToken);
        }
    }

Come vedi qui ho messo un Debug.WriteLine per loggare la richiesta nella finestra "Output" di Visual Studio, ma avrei potuto usare un Trace.TraceInformation per usare il meccanismo di tracing di ASP.NET.

Centralizza la costruzione dei tuoi HttpClient (ad esempio in un container IoC) così che il logging delle richieste sia "globale".

ciao,
Moreno
Modificato da BrightSoul il 17 febbraio 2017 23.55 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.