У меня есть реализация DelegatingHandler для регистрации содержания запроса/ответа:Web API содержание запроса пустой
public class RequestAndResponseLoggerDelegatingHandler : DelegatingHandler
{
public IDataAccess Data { get; set; }
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
var started = DateTime.UtcNow;
var response = await base.SendAsync(request, cancellationToken);
await Log(started, request, response);
return response;
}
private async Task Log(DateTime start, HttpRequestMessage request, HttpResponseMessage response)
{
var finished = DateTime.UtcNow;
var requestContent = await request.Content.ReadAsStringAsync();
var responseContent = await response.Content.ReadAsStringAsync();
var info = new ApiLogEntry(start, finished, requestContent, responseContent, request, response);
Data.Log(info);
}
}
, но по какой-то причине requestContent
приходит с пустыми руками. request.Content.Length
подтверждает, что есть контент, его просто не извлекают.
Любые идеи?
Работы очарование, большое спасибо. –
Но после этого привязка всегда возвращает нулевой объект, потому что поток уже был прочитан до конца. Как сбросить поток запроса до начала? –