Do celów rejestrowania próbuję monitorować żądania realizowane za pomocą interfejsu WebAPI. Stworzyłem i szukam sposobu na odzyskanie ciała wysłanego w żądaniu po spełnieniu żądania i udzieleniu odpowiedzi. Próbuję to zrobić za pomocą ActionFilter
, ale do tej pory nie udało się odczytać treści z żądania.Powrót Ciało żądania w ramach ActionFilter
Czy ktoś może doradzić, w jaki sposób mogę uzyskać dostęp do tych informacji?
Dla kontekście staram się robić to w ramach tego kodu:
public class LoggingActionFilter : ActionFilterAttribute
{
public override Task OnActionExecutedAsync(HttpActionExecutedContext actionExecutedContext, CancellationToken cancellationToken)
{
var test = actionExecutedContext.Request.Content.ReadAsStringAsync().Result;
return base.OnActionExecutedAsync(actionExecutedContext, cancellationToken);
}
}
próbowałem czytania z powrotem Content
o zmiennej actionExecutedContext
aby odzyskać ciało, ale znalazłem ten powrót tylko puste tak daleko.
Próbowałem już polecenia OnActionExecuting, ale bez powodzenia, generuje błąd "Obiekt nie odwołuje się do instancji obiektu". Pomysł z obsługą delegującą działa, ale miałem nadzieję, że zrobię to po spełnieniu żądania. Czy to byłoby możliwe? –
Po zmianie funkcji na użycie funkcji innej niż asynchroniczna, zgodnie z sugestią, udało mi się odzyskać ciało tak, jak chciałem, za pomocą 'actionExecutedContext.Request.Content.ReadAsStringAsync(). Dzięki! –