Как добиться бесконечной загрузки потокового файла из ASP.NET Core в браузер ChromeC#

Место общения программистов C#
Ответить
Anonymous
 Как добиться бесконечной загрузки потокового файла из ASP.NET Core в браузер Chrome

Сообщение Anonymous »

У меня есть конечная точка ASP.NET Core, которая передает динамически созданный файл неизвестного размера:

Код: Выделить всё

    public async Task ExportAsync(CancellationToken cancellationToken = default)
{
Response.Headers.Append("X-Content-Type-Options", "nosniff");
Response.Headers.Append("Cache-Control", "no-cache, no-store, must-revalidate");
Response.Headers.Append("Pragma", "no-cache");
Response.Headers.Append("Expires", "0");
Response.ContentType = "application/zip";
Response.Headers.Append("Content-Disposition", "attachment; filename=\"file.zip\"");

PipeWriter outStream = HttpContext.Response.BodyWriter;

byte[] buffer = new byte[100];
ReadOnlyMemory source = new ReadOnlyMemory(buffer);
for (int i = 0; i < 100; i++)
{
await outStream.WriteAsync(source, cancellationToken);
await outStream.FlushAsync(cancellationToken);
await Task.Delay(100, cancellationToken);
}

return new EmptyResult();
}
Как-то это работает, файл передается в браузер, однако я не вижу никакого прогресса, пока весь файл не будет загружен в браузер. Я понимаю, что без отправленного контента я вряд ли смогу увидеть точный прогресс, но ожидаю увидеть хотя бы ту бесконечную анимацию, что происходит загрузка. В инструментах разработчика Chrome я вижу, что файл передается в потоковом режиме, поэтому Chromes знает о потоке. Конвейер — HTTP2.
Почему вообще нет анимации загрузки?

Подробнее здесь: https://stackoverflow.com/questions/791 ... re-to-chro
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»