来自控制器的响应 class
Response from controller class
我有一个控制器 class 是工作人员编写的,其中包含一个看起来像这样的方法。
(显然这不是完整的代码,只是我感到困惑的部分)。它是 ASP.Net 核心项目的一部分。
var memoryStream = new MemoryStream();
var result = new HttpResponseMessage(HttpStatusCode.OK);
using (var stream = System.IO.File.OpenRead(newZipPath))
{
stream.CopyTo(memoryStream);
result.Content = new ByteArrayContent(memoryStream.ToArray());
}
return File(memoryStream.ToArray(), "application/zip");
现在我不太擅长 C#,但感觉“结果”变量不会被发送到任何地方或被使用?我是正确的还是 ASP.Net Core 有一些神奇的方法来发送这个结果以及 return 语句中的结果。
没错。 result
变量中似乎没有任何意义,ASP.Net MVC(框架和核心版本)将从 File(memoryStream.ToArray(), "application/zip");
.
生成适当的 FileResult
您可以更进一步,真正减少此代码:
using (var stream = System.IO.File.OpenRead(newZipPath))
{
return File(stream, "application/zip");
}
无需创建第二个 MemoryStream 并将其转换为字节数组。
我有一个控制器 class 是工作人员编写的,其中包含一个看起来像这样的方法。
(显然这不是完整的代码,只是我感到困惑的部分)。它是 ASP.Net 核心项目的一部分。
var memoryStream = new MemoryStream();
var result = new HttpResponseMessage(HttpStatusCode.OK);
using (var stream = System.IO.File.OpenRead(newZipPath))
{
stream.CopyTo(memoryStream);
result.Content = new ByteArrayContent(memoryStream.ToArray());
}
return File(memoryStream.ToArray(), "application/zip");
现在我不太擅长 C#,但感觉“结果”变量不会被发送到任何地方或被使用?我是正确的还是 ASP.Net Core 有一些神奇的方法来发送这个结果以及 return 语句中的结果。
没错。 result
变量中似乎没有任何意义,ASP.Net MVC(框架和核心版本)将从 File(memoryStream.ToArray(), "application/zip");
.
您可以更进一步,真正减少此代码:
using (var stream = System.IO.File.OpenRead(newZipPath))
{
return File(stream, "application/zip");
}
无需创建第二个 MemoryStream 并将其转换为字节数组。