从C#返回FileStreamResult时,无法访问已关闭的流.NetCore API



C#。Net Core 3.1

在我的C#api中,我在FileStreamResult中返回一个pdf文件,效果很好。

通常,我使用包装流,但是此代码失败CCD_ 1。

using (MemoryStream stream = new MemoryStream(byteArray))
{
fileStreamResult = new FileStreamResult(stream, "application/pdf");
}
return (ActionResult)fileStreamResult;

所以我需要这样做:

var stream = new MemoryStream(byteArray);
fileStreamResult = new FileStreamResult(stream, "application/pdf");
return (ActionResult)fileStreamResult;

我假设流需要保持打开,我应该担心内存泄漏还是IIS关闭流?有更好的选择吗?

Using语句关闭并从Using语句中的内存集卸载变量,这就是为什么您在尝试访问关闭的内存流时出错的原因。如果只想在最后返回结果,则不需要使用using语句。

使用语句对于从内存中删除数据很有用,但您可以使用.dispose((自行处理数据

为什么使用块将return (ActionResult)fileStreamResult;保持在外部?

最新更新