De retour CSV .NET contrôleur de Base

Je vais avoir de la difficulté à avoir un .NET API de Base du Contrôleur de point de terminaison de résoudre CSV télécharger. Je suis en utilisant le code suivant qui j'ai tiré à partir d'un .NET 4.5 contrôleur:

[HttpGet]
[Route("{id:int}")]
public async Task<HttpResponseMessage> Get(int id)
{
    string csv = await reportManager.GetReport(CustomerId, id);
    var response = new HttpResponseMessage(HttpStatusCode.OK);
    response.Content = new StringContent(csv);
    response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/csv");
    response.Content.Headers.ContentDisposition = 
        new ContentDispositionHeaderValue("attachment") { FileName = "report.csv" };
    return response;
}

Quand j'ai frappé à ce point de terminaison de mon Angulaire 4 app, je reçois la réponse suivante écrit dans le navigateur:

{
    "version": {
        "major": 1,
        "minor": 1,
        "build": -1,
        "revision": -1,
        "majorRevision": -1,
        "minorRevision": -1
    },
    "content": {
        "headers": [
            {
                "key": "Content-Type",
                "value": [
                    "text/csv"
                ]
            },
            {
                "key": "Content-Disposition",
                "value": [
                    "attachment; filename=11.csv"
                ]
            }
        ]
    },
    "statusCode": 200,
    "reasonPhrase": "OK",
    "headers": [ ],
    "requestMessage": null,
    "isSuccessStatusCode": true
}

Mon espoir est que quand j'ai touché le point de terminaison, l'utilisateur sera invité à télécharger le fichier CSV.

J'ai trouvé cette post sur comment faire pour "export" un CSV .NET de Base. Le problème est que je suis de la récupération de la CSV en mémoire à partir de la source (un seau AWS S3) alors que ce code semble fonctionner seulement lorsque vous avez une IEnumerable<object>.

Je me demande si mon problème se situe soit en demande ou en-têtes de réponse, où il y a quelque chose de prévenir le navigateur à partir de la récupération d'un fichier CSV à partir de mon API. Voici ce que je vois dans le navigateur de la console:

De retour CSV .NET contrôleur de Base

docs.microsoft.com/en-us/aspnet/core/mvc/models/formatting
Un autre avis, dans ces cas souvent préférable d'utiliser outputformatters qui va lire acceptencoding par exemple, ou par d'autres règles. Si vous travaillez sur un gros projet, vous avez probablement besoin d'utiliser l'export csv pour un certain nombre de méthodes et si vous allez créer générique formaté vous éviter des travaux inutiles à l'avenir. Il peut être une couche de middleware
Avez-vous quelque chose à ajouter? Vous reliant à un article qui est référencé dans un lien de mon post n'est pas très utile.
Il semble comme si vous êtes à chercher les télécharger via AJAX. Lorsque vous faites cela, vous devez définir la responseType comme arraybuffer et de créer un blob de la réponse de données dans votre réussite de la méthode. Vous devrez également gérer le téléchargement manuellement, en créant un lien avec ce que les données et en "cliquant" dessus. Rien de ce qui se passe pour vous automatiquement.
Dans le réseau de trafic de capture d'écran, j'ai été frappé directement l'URL dans le navigateur.

OriginalL'auteur im1dermike | 2017-10-27