.net - 包装 using 语句在 api 控制器上引发错误
问题描述
我的 API 控制器上有以下代码行,它们将返回文件。这行代码运行良好,但我想将它们包装到 using 语句中以避免内存泄漏。但如果我这样做,端点不会返回文件并且我收到异常“应用程序引发了未处理的异常。System.ObjectDisposedException:无法访问关闭的流。”
Stream memory = await _mySrv.GetDocMemoryStream(data);
var contentType = filename.GetContentType();
return File(memory, contentType, "myfile.pdf");
至少在 API 控制器上保留这样的代码是否安全?它会由 .NET 核心框架处理吗?
解决方案
如果您定义您的Stream
asMemoryStream
然后可以使用ToArray()
将流内容放入File
结果中。
我在我的一个应用程序中使用了类似的代码。
using (MemoryStream memory = await _mySrv.GetDocMemoryStream(data))
{
var contentType = filename.GetContentType();
return File(memory.ToArray(), contentType, "myfile.pdf");
}
推荐阅读
- angular - 如何将图像添加到 Angular Grid 单元格
- django - 使用 RabbitMQ 更新 Celery 中的任务
- php - Laravel 从子域变量重置密码提交未命中参数
- c# - 带正方形的复选框
- r - dygraph stepPlot:有方向选项吗?
- python - 连接本地网络中的另一台计算机
- spring-data-mongodb - 在 Bulk Operation Spring MongoDB 中替换整个文档
- reactjs - React:模拟本地开发的 http 调用
- python - 在 mac 上的快速入门 xlwings 中扩展范围
- angular - 如何在自定义 Angular 组件中禁用 ngModel 的默认行为?