我正在尝试从我的ASP.NET Core 2控制器返回一个PDF文件。 我有这段代码(大部分来自这个SO问题):
var net = new System.Net.WebClient();
//a random pdf file link
var fileLocation = "https://syntera.io/documents/T&C.pdf";/
var data = net.DownloadData(fileLocation);
MemoryStream content = null;
try
{
content = new MemoryStream(data);
return new FileStreamResult(content, "Application/octet-stream");
}
finally
{
content?.Dispose();
}
上面的代码是我的控制器调用的服务类的一部分。这是来自我的控制器的代码。
public async Task<IActionResult> DownloadFile(string fileName)
{
var result = await _downloader.DownloadFileAsync(fileName);
return result;
}
但我一直收到 ObjectDisposedException: Cannot access a closed Stream.
的错误。
尝试和最终块是从另一个SO问题中的修复尝试。
主要问题是A)这是将PDF文件发送回浏览器的正确方法吗?B)如果不是,如何更改代码以将PDF发送到浏览器?
理想情况下,我不想先将文件保存在服务器上,然后再将其返回到控制器。我宁愿在内存中保留所有内容并返回它。
try
/finally
之前的确切代码是什么?那个try
/finally
肯定会引起ObjectDisposedException
,因此看看在引入它之前发生了什么会很有用。 - Kirk Larkin