Modificar la respuesta del archivo estático en ASP.NET Core

Sirvo un montón de archivos estáticos en mi aplicación conapp.UseStaticFiles(). Me gustaría inyectar un marcado adicional en la respuesta para un archivo HTML en particular antes de enviarlo. Mi primer intento fue agregar middleware como este antes que el middleware de archivos estáticos:

app.Use(async (context, next) => {
    await next();

    // Modify the response here
});

Sin embargo, esto no funciona ya que en realidad no puedo leer el flujo de lectura de lectura, está usando KestrelFrameResponseStream debajo del capó, que es ilegible.

Entonces, pensé que podría reemplazar el flujo del cuerpo de respuesta con unMemoryStream que podría escribir a:

app.Use(async (context, next) => {
    context.Response.Body = new MemoryStream();
    await next();

    // Modify the response here
});

Pero esto solo hace que la solicitud nunca se complete: pasa por todas las etapas de canalización, pero ni siquiera devuelve ningún encabezado al navegador.

Entonces, ¿hay alguna forma de modificar la respuesta producida por elStaticFileMiddleware?

Actualizar

Como el archivo HTML en cuestión es pequeño (765 bytes), el consumo de memoria no es una preocupación. Sin embargo, cualquier intento de leer / modificar la respuesta sigue causando el mismo problema que antes (no se devuelve nada). Más explícitamente, esto es lo que se está haciendo:

app.Use(async (context, next) => {
    var originalStream = context.Response.Body;
    var bufferStream = new MemoryStream();
    context.Response.Body = bufferStream;
    await next();

    bufferStream.Seek(0, SeekOrigin.Begin);

    if (/* some condition */)
    {
        var reader = new StreamReader(bufferStream);
        var response = await reader.ReadToEndAsync();

        // The response string is modified here

        var writer = new StreamWriter(originalStream);
        await writer.WriteAsync(response);
    }
    else
    {
        await bufferStream.CopyToAsync(originalStream);
    }
});

Los archivos que golpean elelse la condición se devuelve bien, pero el archivo particular en elif La condición causa problemas. Incluso si no modifico la transmisión en absoluto, todavía se cuelga.

Respuestas a la pregunta(1)

Su respuesta a la pregunta