【发布时间】:2017-07-07 14:06:51
【问题描述】:
我想实现简单的视频文件流。 有我的 API 控制器:
[HttpGet]
[Route("api/VideoContent")]
public HttpResponseMessage GetVideoContent([FromUri] string fileName)
{
if (fileName == null)
{
return new HttpResponseMessage(HttpStatusCode.BadRequest);
}
if (Request.Headers.Range != null)
{
try
{
//using (FileStream fileStream = _videoFileProvider.GetFileStream(fileName))
//{
HttpResponseMessage partialResponse = Request.CreateResponse(HttpStatusCode.PartialContent);
FileStream fileStream = _videoFileProvider.GetFileStream(fileName);
partialResponse.Content = new ByteRangeStreamContent(fileStream, Request.Headers.Range, new MediaTypeHeaderValue("video/mp4"));
return partialResponse;
//}
}
catch (Exception)
{
return new HttpResponseMessage(HttpStatusCode.InternalServerError);
}
}
return new HttpResponseMessage(HttpStatusCode.RequestedRangeNotSatisfiable);
}
此代码正在运行,但如您所见,fileStream 未处理。我尝试使用 using 块(注释行),但此代码不起作用 - 在调试模式下方法运行无异常,但浏览器显示 500 错误代码的响应。
我的错误在哪里?为什么我收到 500 内部服务器错误?在我的情况下如何正确处理文件流?
【问题讨论】:
-
Maxad has a good answer 通过 finally 块关闭流。
标签: c# asp.net-mvc stream dispose