C# 内容下载两次,每次请求一次

C# 内容下载两次,每次请求一次,c#,api,.net-core,C#,Api,.net Core,我正在通过浏览器将大文件下载到客户端。当我开始下载时,内容会被写入正文。我看到在chrome中向用户传输,他们看不到进度。 一旦完成传输,并且下面的方法完成,您就可以看到文件正在下载。这似乎是双重工作 公共异步任务GetFile(字符串文件名、字符串文件令牌) { Stream stream = null; int bufferSize = 1048576; byte[] buffer = new byte[bufferSize];

我正在通过浏览器将大文件下载到客户端。当我开始下载时,内容会被写入正文。我看到在chrome中向用户传输,他们看不到进度。

一旦完成传输,并且下面的方法完成,您就可以看到文件正在下载。这似乎是双重工作

公共异步任务GetFile(字符串文件名、字符串文件令牌) {

        Stream stream = null;
        int bufferSize = 1048576;
        byte[] buffer = new byte[bufferSize];
        int length;
        long lengthToRead;

        try
        {
            string filePath = Path.Combine(_env.WebRootPath, $"Common{Path.DirectorySeparatorChar}", $"Files{Path.DirectorySeparatorChar}", fileToken);

            stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
            long dj = stream.Length / bufferSize;
            if (stream.Length % bufferSize > 0)
            {
                dj += 1;
            }



            dj = dj * bufferSize;
            lengthToRead = stream.Length;

            Response.ContentType = "application/pdf";
            Response.Headers.Add("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
            Response.ContentLength = dj;

            while( lengthToRead > 0)
            {
                length = stream.Read(buffer, 0, bufferSize);

               await Response.BodyWriter.WriteAsync(buffer);

               await Response.BodyWriter.FlushAsync();

                lengthToRead = lengthToRead - length;


            }
        }
        catch(Exception exp)
        {
            Response.ContentType = "text/html";

        }
        finally
        {
            if(stream != null)
            {
                stream.Close();
            }
        }

    }