Я создаю публичный REST Api с использованием ASP.NET Core 1.0 RC2 и хотел бы регистрировать входящие запросы и исходящие ответы.Как зарегистрировать тело ответа HTTP в ASP.NET Core 1.0
Я создал класс промежуточного программного обеспечения, который добавляется в конвейер перед вызовом app.UseMvc();
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseIOMiddleware();
app.UseMvc();
}
Мой Middleware класс выглядит следующим образом:
public class IOMiddleware
{
private readonly RequestDelegate _next;
public IOMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context)
{
LogRequest(context.Request);
await _next.Invoke(context);
}
private async void LogRequest(HttpRequest request)
{
using (var bodyReader = new StreamReader(request.Body))
{
string body = await bodyReader.ReadToEndAsync();
request.Body = new MemoryStream(Encoding.UTF8.GetBytes(body));
System.Diagnostics.Debug.Print(body);
}
}
}
Я могу прочитать поток запроса тела и перематывать его, используя этот пример: Rewind request body stream, но я не знаю, как читать тело ответа, как поток не читается.
В Web API 2.0 я мог бы использовать метод HttpResponseMessage.Content.ReadAsByteArrayAsync(), но как я могу выполнить то же самое в ASP.NET Core 1.0 RC2?
Возможный дубликат [Как читать ASP.NET Core, Response.Body?] (Https://stackoverflow.com/questions/43403941/how-to-read-asp-net-core-response-body) –