2017-09-12 2 views
0

Ich habe einen Client in Angular 2 geschrieben, es trifft eine API, die eine große Menge von Objekten zurückgibt. Ich möchte es aufteilen, damit ich dem Benutzer einige Daten präsentieren kann, während der Rest im Hintergrund geladen wird.Verwenden von PushStreamContent zum Teilen von Daten in Chunks

Aus der Online-Suche nach Möglichkeiten, Daten in einer Anfrage zu streamen, schien die PushStreamContent-Klasse am besten geeignet (offen für bessere Vorschläge). Ich habe dieses Tutorial durchgelesen http://blog.guvweb.co.uk/2014/07/02/streaming-web-api/

Ich habe versucht, ein grundlegendes Beispiel implementiert, das eine Liste von Zahlen streamen wird, damit ich es testen konnte.

In der Minute, die ich gerade die API direkt vom Browser treffe, um zu sehen, ob es irgendwelche Daten zurückgibt. Ich bekomme diese Fehlermeldung.

API Error Page

Kann mir jemand sagen, was ich falsch mache?

Mein Controller-Klasse

[Route("numbers")] 
[HttpGet] 
public IHttpActionResult StreamData() 
{ 
    // Generates a list of numbers 1 --> 1,000,000 
    List<int> numbers = _dataAccess.GenerateNumbers(); 

    var response = Request.CreateResponse(); 

    response.Content = new PushStreamContent((stream, Content, context) => 
    { 
     try 
     { 
      foreach (var num in numbers) 
      { 
       var serializer = new JsonSerializer(); 
       using (var writer = new StreamWriter(stream)) 
       { 
        serializer.Serialize(writer, num); 
        stream.Flush(); 
       } 
      } 
     } 
     finally 
     { 
      stream.Close(); 
     } 

    }); 

    return Ok(response); 
} 

Antwort

0

Does not mater fand ich das Problem, war mein eigener gesunder Menschenverstand die Täter!

Mein Browser hat die Dateien heruntergeladen und ich habe sie nicht gesehen, der API-Stream funktioniert einwandfrei!

Verwandte Themen