我的问题与这个问题类似: Does File() In asp.net mvc close the stream?

我在C#MVC4中有以下内容.

FileStream fs = new FileStream(pathToFileOnDisk, FileMode.Open);
FileStreamResult fsResult = new FileStreamResult(fs, "Text");
return fsResult;

fs会在FileStreamResult前自动关闭吗?谢谢

推荐答案

对它在流周围使用using个块,这确保了资源将被释放.

下面是FileStreamResult WriteFile方法的内部implementation:

protected override void WriteFile(HttpResponseBase response)
{
    // grab chunks of data and write to the output stream
    Stream outputStream = response.OutputStream;
    using (FileStream)
    {
        byte[] buffer = new byte[BufferSize];

        while (true)
        {
            int bytesRead = FileStream.Read(buffer, 0, BufferSize);
            if (bytesRead == 0)
            {
                // no more data
                break;
            }

            outputStream.Write(buffer, 0, bytesRead);
        }
    }
}

Asp.net相关问答推荐

IISExpress未在ARM64 Mac/.NET 4.8上启动

.net 中的 [] 括号是什么?

使用 Asp.Net MVC 和 KnockoutJS 处理日期

Web API 自托管 - 在所有网络接口上绑定

如何在asp.net中单击按钮的新选项卡中打开页面?

我可以在 .net 核心中使用 Entity Framework 6(非核心)吗?

ASP.Net - App_Data & App_Code 文件夹?

无法从 App_code 文件夹中找到类型或命名空间

在每个控制器的 ASP.NET WebAPI 上强制使用 CamelCase

我应该如何在类和应用层之间传递数据?

aspx 文件中的 if 语句

具有自定义报告创建能力的最佳 ASP.NET 报告引擎

Web API 必填参数

MVC3 值 Ajax 文件上传

如何在 GridView 中隐藏 TemplateField 列

如何获取程序集的最后修改日期?

MVC3 和实体框架

ASP.NET - 从静态方法/静态类访问会话?

Windows 身份验证在本地 IIS 7.5 上不起作用.错误 401.1

如何识别字符串是否包含 unicode 字符?