Ich möchte die neue Methode für globale Protokollierungsfehler verwenden. Ich habe eine Klasse geschrieben, die ExceptionLogger
erbt und überschreibt die Log()
Methode. Dann registriert es als Ersatz.Aktionsparameter von ExceptionLogger referenzieren
public class TraceExceptionLogger : ExceptionLogger
{
public async override void Log(ExceptionLoggerContext context)
{
// This is always empty string
var content = await context.Request.Content.ReadAsStringAsync();
// This is almost always null
var actionContext = context.ExceptionContext.ActionContext;
}
}
Ich kann durch die ExceptionLoggerContext
Eigenschaften des Objekts graben so ziemlich alles zu bekommen, ich brauche, außer den Aktionsparameter. Es ist in der Tat eine ActionContext
Eigenschaft, aber ich habe es nur Null gesehen und this wiki page Staaten, dass ActionContext
und ControllerContext
wird fast immer Null sein.
Außerdem kann ich den Inhaltsstream nicht abrufen, da sein Stream bereits gelesen wird, bevor er zu meinem Logger gelangt. Es gibt also keine Möglichkeit für mich, irgendeinen geposteten JSON vom Inhalt der Anfrage zu bekommen.
Gibt es vielleicht eine Möglichkeit, die veröffentlichten Daten von HttpContext.Current
oder auf andere Weise zu bekommen?
SIE MEINE ASS GERETTET! Ich wollte mich umbringen. Es war super frustrierend, den Inhalt der Anfrage nicht zu protokollieren. –
@StefanVasiljevic Ich bin so froh, dass es geholfen hat und dass ich dein Leben gerettet habe. Ich denke, das ist das erste Mal, dass mein Code das jemals gemacht hat, haha. Prost! – jlafay
@jlafay ..und es wird nicht der letzte sein! Nov 2017, immer noch Leben retten! – CloudyOne