相关疑难解决方法(0)

FileStreamResult是否关闭Stream?

我的问题类似于这个问题: 文件()在asp.net mvc中关闭流吗?

我在C#MVC 4中有以下内容.

FileStream fs = new FileStream(pathToFileOnDisk, FileMode.Open);
FileStreamResult fsResult = new FileStreamResult(fs, "Text");
return fsResult;
Run Code Online (Sandbox Code Playgroud)

fs自动关闭FileStreamResult吗?谢谢!

c# asp.net asp.net-mvc

26
推荐指数
1
解决办法
6920
查看次数

在ASP.NET中实现文件下载时如何处理文件流?

我有一个DocumentGenerator包装的课程MemoryStream.所以我已经IDisposable在课堂上实施了.

我看不出如何/在哪里可以处理它.

这是我当前的代码,它在MVC中执行文件下载:

using (DocumentGenerator dg = DocumentGenerator.OpenTemplate(path))
{
    /* some document manipulation with the 
       DocumentGenerator goes here ...*/

    return File(dg.GetDocumentStream(), "text/plain", filename);
}
Run Code Online (Sandbox Code Playgroud)

在控制器完成之前关闭/处理流时出现此错误.在这种情况下,如何确保我的资源得到妥善处理?

编辑:我现在的执行IDisposable只是处置MemoryStream.我知道这不是一个正确的实现,我只是用它作为测试.有什么不同我可以在这里做它的工作吗?

public void Dispose()
{
    _ms.Dispose();
    _ms = null;
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc streaming idisposable

21
推荐指数
1
解决办法
9845
查看次数

在 c# api 中转发流

在我的服务中,我们需要获取另一个服务创建的 zip 文件并将其返回。

这是我的代码(代码已针对问题进行了简化):

[HttpGet("mediafiles/{id}")]
public async Task<IActionResult> DownloadMediaFiles(int id)
{
    var fileIds = _myProvider.GetFileIdsForEntityId(id); // result be like "1,2,3,4"

    using var httpClient = new HttpClient();
    var response = await httpClient.GetAsync($"http://file-service/bulk/{fileIds}");
    var stream = await response.Content.ReadAsStreamAsync();

    return File(stream, "application/octet-stream", "media_files.zip");
}
Run Code Online (Sandbox Code Playgroud)

使用id我可以收集创建fileIds字符串所需的信息并调用其他服务。

这是其他服务上的api(已针对问题简化了代码):

[HttpGet("bulk/{idList}")]
public async Task<IActionResult> DownloadBulk(string idList)
{
    var ids = string.IsNullOrEmpty(idList) ? new List<int>() : idList.Split(',').Select(x => Convert.ToInt32(x));

    using var memoryStream = new MemoryStream();
    using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true))
    { …
Run Code Online (Sandbox Code Playgroud)

c# api zip stream asp.net-core

0
推荐指数
1
解决办法
498
查看次数

标签 统计

c# ×3

asp.net ×2

asp.net-mvc ×2

api ×1

asp.net-core ×1

idisposable ×1

stream ×1

streaming ×1

zip ×1