Sto creando un pubblico REST Api utilizzando ASP.NET Core 1.0 RC2 e mi piace per registrare le richieste in entrata e le risposte in uscita.Come registrare il corpo di risposta HTTP in ASP.NET Core 1.0
Ho creato una classe middleware che viene aggiunta alla pipeline prima della chiamata ad app.UseMvc();
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseIOMiddleware();
app.UseMvc();
}
classe
mio Middleware si presenta così:
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);
}
}
}
posso leggere il flusso di richiesta di corpo e riavvolgerlo con questo esempio: Rewind request body stream, ma non sono sicuro come leggere il corpo della risposta come il flusso non è leggibile.
In Web API 2.0 avrei potuto utilizzare il metodo HttpResponseMessage.Content.ReadAsByteArrayAsync(), ma come posso ottenere la stessa cosa in ASP.Net Core 1.0 RC2?
Eventuali duplicati di [Come leggere ASP.NET Nucleo Response.Body?] (Https://stackoverflow.com/questions/43403941/how-to-read-asp-net-core-response-body) –