Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# FileStreamResult上的ASP.NET核心响应头_C#_Asp.net Core - Fatal编程技术网

C# FileStreamResult上的ASP.NET核心响应头

C# FileStreamResult上的ASP.NET核心响应头,c#,asp.net-core,C#,Asp.net Core,我正在从Azure Blob存储下载.mp4文件,并将其推送到UI。下载效果很好,问题是标题的内容长度设置不正确。因此,您无法跟踪下载时间,因为浏览器只显示已下载的内容,而不显示剩余的内容和估计时间。我的响应代码是错误的还是应该更改请求?我的代码如下: [HttpGet("VideoFileDownload")] public IActionResult VideoFileDownloadAsync([FromQuery]int VideoId) { ...code to get bl

我正在从Azure Blob存储下载.mp4文件,并将其推送到UI。下载效果很好,问题是标题的内容长度设置不正确。因此,您无法跟踪下载时间,因为浏览器只显示已下载的内容,而不显示剩余的内容和估计时间。我的响应代码是错误的还是应该更改请求?我的代码如下:

[HttpGet("VideoFileDownload")]
public IActionResult VideoFileDownloadAsync([FromQuery]int VideoId)
{
     ...code to get blob file
     return new FileStreamResult(blob.OpenRead(), new MediaTypeHeaderValue("application/octet-stream")
}
我已经使用了各种请求和响应头,但没有什么区别


这些文件很大,我知道旧的asp.net检查范围头的方法,然后执行分块流,但我想使用.net core中的新功能,这些功能无法按预期工作,或者可能我只是不完全理解。有人能给我一个使用asp.net核心代码下载的文件的工作示例吗。

如果您有文件大小,您可以在返回FileStreamResult之前在响应对象中设置响应的内容长度,如下所示:

[HttpGet("VideoFileDownload")]
public IActionResult VideoFileDownloadAsync([FromQuery]int VideoId)
{
     ...code to get blob file
     long myFileSize = blob.Length; // Or wherever it is you can get your file size from.
     this.Response.ContentLength = myFileSize;
     return new FileStreamResult(blob.OpenRead(), new MediaTypeHeaderValue("application/octet-stream")
}