私はクライアントをAngular 2で書いていますが、これは大きなセットのオブジェクトを返すAPIにヒットします。私はそれを分割したいので、残りの部分をバックグラウンドで読み込んでいる間に作業するためのデータをいくつか提示することができます。PushStreamContentを使用してデータをチャンクに分割する
リクエストでデータをストリーミングする方法をオンラインから見てみると、PushStreamContentクラスが最も適切であるように見えました(より良い提案が可能)。私はこのチュートリアルを通して読んでいますhttp://blog.guvweb.co.uk/2014/07/02/streaming-web-api/
私はそれをテストできるように数字のリストをストリーミングする基本的な例を実装しようとしました。
すぐにブラウザからAPIを直接呼び出して、データを返すかどうかを確認しています。このエラーメッセージが表示されます。
誰かが私が間違っているのを教えすることはできますか?
私のコントローラクラス
[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);
}