Wie protokolliere ich die unformatierte HTTP-Anforderung in der ASP.NET-Web-API, unabhängig davon, ob sie an einen Controller weitergeleitet wird oder nicht?

8

Ist es möglich, jede HTTP-Anforderung an eine ASP.NET-Web-API zu protokollieren, selbst wenn die Anforderung fehlerhaft ist oder aus einem anderen Grund nicht an einen der Controller weitergeleitet werden kann.

Wenn zum Beispiel eine POST-Methode ein Order-Modell als Parameter hat, verhindert eine inkorrekte Anfrage, dass sie jemals die POST-Methode des Controllers erreicht. Ich möchte jemanden warnen, damit Maßnahmen ergriffen werden können, um zukünftige Fehler zu vermeiden.

Gibt es eine Möglichkeit, diese Anfragen weiter vor dem Controller zu erfassen?

    
Feckmore 19.10.2012, 14:28
quelle

2 Antworten

3

Verwenden Sie entweder Tracing, Sie müssen ITraceWriter wie unten gezeigt implementieren

Ссылка

Oder implementieren Sie Message-Handler

Ссылка

Ссылка

Message-Handler ermöglichen es Ihnen, die Nachricht zu ändern, bevor sie auf HttpControllerDispatcher kommt, und daher können Sie häufige Probleme mit dem Routing und der Auswahl der Aktionsmethode behandeln.

Aber als die letzten zögern Sie nicht, AppFabric-Protokollierung zu verwenden, wenn Sie auf IIS hosten, weil es Ihnen Informationen geben kann, wenn etwas schief geht, bevor Anforderungen zu Ihrer Webanwendung kommen. Es behandelt Szenarien mit globalen Fehlern in der Webanwendung, z. B. Fehler mit web.config.

    
Regfor 20.10.2012, 06:14
quelle
2

Wenn Sie ermöglichen in der ASP.NET Web API Tracing per Tracing in der ASP.NET-Web-API protokolliert die integrierte Tracing-Infrastruktur die Informationen, nach denen Sie suchen.

Im Falle einer ungültigen Anforderung, die die Inhaltsverhandlung nicht besteht, wird im DefaultContentNegotiator ein HttpError auftreten.

Hier ist ein Beispiel für die einfache Ablaufverfolgung für diese Art von Fehler:

  

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

Der Trace-Writer ist ein TraceRecord als seine Eingabe, die die Anforderungsinformationen sowie optional eine beliebige benutzerdefinierte Informationen enthalten werden möchten Sie vielleicht verwenden.

Die Web API wird die Trace-Writer verwenden Sie konfigurieren Informationen über den Lebenszyklus der Anfragen zu verfolgen. Sie können Trace-Writer verwenden sowohl die Lebenszyklusereignisse sowie ein eigenen Controller-Code zu verfolgen.

    
Oppositional 19.10.2012 17:00
quelle