2017-09-12 11 views
0

私はクライアントをAngular 2で書いていますが、これは大きなセットのオブジェクトを返すAPIにヒットします。私はそれを分割したいので、残りの部分をバックグラウンドで読み込んでいる間に作業するためのデータをいくつか提示することができます。PushStreamContentを使用してデータをチャンクに分割する

リクエストでデータをストリーミングする方法をオンラインから見てみると、PushStreamContentクラスが最も適切であるように見えました(より良い提案が可能)。私はこのチュートリアルを通して読んでいますhttp://blog.guvweb.co.uk/2014/07/02/streaming-web-api/

私はそれをテストできるように数字のリストをストリーミングする基本的な例を実装しようとしました。

すぐにブラウザからAPIを直接呼び出して、データを返すかどうかを確認しています。このエラーメッセージが表示されます。

API Error Page

誰かが私が間違っているのを教えすることはできますか?

私のコントローラクラス

[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); 
} 

答えて

0

が母校しない、私は問題を発見し、自分の常識が犯人でした!

ブラウザがファイルをダウンロードしていて、表示されませんでした。APIストリームは正常に動作します。

関連する問題