2012-10-19 1 views
8

È possibile registrare ogni richiesta HTTP effettuata su un'API Web ASP.NET, anche se la richiesta non è corretta oppure per altri motivi non riesce a instradarsi a uno dei controller.Come si registra la richiesta HTTP non elaborata nell'API Web ASP.NET indipendentemente dal fatto che instradi o meno su un controller?

Ad esempio, se un metodo POST ha un modello Ordine come parametro, una richiesta errata impedirà di raggiungere il metodo POST del controllore. Vorrei avvisare qualcuno in modo che possano essere intraprese azioni per prevenire futuri fallimenti.

C'è un modo per acquisire queste richieste più a monte dal controller?

risposta

3

usare sia Tracing, è necessario implementare ITraceWriter come illustrato di seguito

http://www.asp.net/web-api/overview/testing-and-debugging/tracing-in-aspnet-web-api

o implementare gestori di messaggi

http://www.strathweb.com/2012/05/implementing-message-handlers-to-track-your-asp-net-web-api-usage/

http://www.asp.net/web-api/overview/working-with-http/http-message-handlers

gestori di messaggi consentono di modificare il messaggio prima che arrivi a HttpControllerDispatcher, e quindi puoi gestire problemi comuni con il routing e la selezione del metodo di azione.

Ma come ultimo non esitare a utilizzare la registrazione AppFabric, quando stai ospitando su IIS, perché ti può dare informazioni quando qualcosa non va prima che le richieste arrivino alla tua Applicazione Web. Gestisce scenari con errori globali nell'applicazione Web, ad esempio errori con web.config.

2

Se si abilita la traccia nell'API Web ASP.NET per Tracing in ASP.NET Web API, l'infrastruttura di tracciamento integrata registrerà le informazioni che si stanno cercando.

In caso di una richiesta non valida che non riesce alla negoziazione del contenuto, verrà visualizzato un errore HttpError in DefaultContentNegotiator.

Ecco un esempio di semplice traccia per questo tipo di errore:

DefaultContentNegotiator;Negotiate;Type='HttpError', formatters=[JsonMediaTypeFormatterTracer, XmlMediaTypeFormatterTracer, FormUrlEncodedMediaTypeFormatterTracer, FormUrlEncodedMediaTypeFormatterTracer]

Lo scrittore traccia viene assegnato un TraceRecord come input, che conterrà le informazioni richiesta, così come eventualmente qualsiasi informazione personalizzato potrebbe voler usare

L'API Web utilizzerà il writer di tracciamento configurato per tracciare le informazioni per l'intero ciclo di vita delle richieste. È possibile utilizzare il trace writer per tracciare sia gli eventi del ciclo di vita sia il proprio codice del controller.