Cómo descargar el objeto de flujo de memoria a través de angularJS y webaAPI2

Tengo un proyecto donde estoy usandoNPOI para generar documentos de Excel desde mi aplicación Angular. Tengo las llamadas realizadas desde mi servicio angular a mi controlador webapi de la siguiente manera:

function exportReportToExcel(report) {
            return $http.post('reportlibrary/exportReport/', report, {
            }).then(function (response) {
                return response.data;
            });
        };

Dentro del controlador hago la siguiente llamada

[HttpPost]
public HttpResponseMessage ExportReport([FromBody]DTOs.Report report)
{
  try
     {
      IReportPersistenceManager manager = ContainerConfigurator.Instance.Resolve<IReportPersistenceManager>();

      MemoryStream ms = new MemoryStream();
 ,     //we have to pass to the NOPI assemble file type as well as file name 
     //since we only deal with excel for now we will set it but this could be configured later.
      long id = report.ReportId;
      string mimeType = "application/vnd.ms-excel";
      string filename = "unknown";
      manager.ExportDataToExcel(id, (name, mime) =>
      {
       mimeType = mime;
       filename = name;
       return ms;
      });
     ms.Position = 0;

    var response = new HttpResponseMessage();
    response.Content = new ByteArrayContent(ms.ToArray());
    response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.ms-excel");       
   return (response);
   }
   catch (Exception)
   {
   //error
   return new HttpResponseMessage(System.Net.HttpStatusCode.BadRequest);
   }
}

Esta es una migración desde una aplicación MVC y anteriormente pude devolver el objeto usando System.IO.File para devolver el objeto y cerrar la secuencia.

Nunca he hecho esto con Angular, pero por lo que he leído parece que puedo soltar el objeto de flujo de memoria en un byteArray y devolverlo al cliente.

Si este es el enfoque correcto, cómo desentrañar este objeto una vez que regrese al servicio angular y al controlador.

El objetivo aquí es permitir al usuario descargar un informe guardado previamente como un archivo de Excel.

¿Estoy en el camino correcto? ¿Hay una manera más eficiente de descargar un objeto de flujo de memoria? ¿Cómo puedo pasar este contexto al navegador?

gracias por adelantado

Respuestas a la pregunta(1)

Su respuesta a la pregunta