1

WebAPI からストリームをダウンロードしており、ストリームの読み取り中にコードを実行しようとしています。

以下のコードは、Blazor サーバー側またはコンソール アプリで正常に動作します。しかし、blazor-client 側では、コードを実行する前にストリームが最初に完全にダウンロードされます.... ストリームが完了した後、 Console.WriteLine() だけでもコンソールへの書き込みが開始されます。最新の.Net Core 3.0 Preview 8を使用しています...

public async IAsyncEnumerable<SomeClass> GetDataAsync()
{
    var serializer = new JsonSerializer();
    using (var stream = await Http.GetStreamAsync("https://localhost:44334/api/values/i"))
    {
        using (var sr = new StreamReader(stream))
        using (var jr = new JsonTextReader(sr))
        {
            while (await jr.ReadAsync()) //<-- Stream is fully download to browser before taking any actions.
            {
                if (jr.TokenType != JsonToken.StartArray && jr.TokenType != JsonToken.EndArray)
                {
                    Console.WriteLine(jsonReader.LinePosition);
                    yield return serializer.Deserialize<SomeClass>(jr);
                }
            };
        }
    }
}

これを WireShark でテストして、これが発生していることを確認しました。

これは設計によるものですか?

4

1 に答える 1