因此,由于尝试返回 pdf 内联响应,我已经遇到这个问题一段时间了。我在帮助编码页面中搜索了所有问题的答案,但还没有找到可行的方法。我在下面做了一个简化的例子。但核心和真正的生产是一样的。这个问题并不总是发生,但是当它发生时很烦人。这几乎就像是一些奇怪的时间问题或其他我没有看到的事情正在发生。
我收到此错误 System.Web.HttpException (0x80004005): File Not Found ---> System.Web.HttpException (0x80004005): Server cannot append header after HTTP headers have been sent.
有谁知道如何解决这一问题??
[HttpGet]
public ActionResult PDF(string id, bool inline = false)
{
try
{
MemoryStream PDFStream = GetPdfStream(id);
PDFStream.Position = 0;
string PDFFile = "Test.pdf";
if (inline)
{
Response.AppendHeader("Content-Disposition", string.Format("inline; filename={0}", PDFFile));
Response.BufferOutput = true;
return File(PDFStream, MediaTypeNames.Application.Pdf);
}
else
return File(PDFStream, MediaTypeNames.Application.Pdf, PDFFile);
}
catch (Exception Ex)
{
throw new HttpException(404, "File Not Found", Ex);
}
}
最佳答案
在添加新标题之前,您必须先清除标题
if (inline)
{
Response.ClearHeaders();
Response.AppendHeader("Content-Disposition", string.Format("inline; filename={0}", PDFFile));
Response.BufferOutput = true;
return File(PDFStream, MediaTypeNames.Application.Pdf);
}
else
return File(PDFStream, MediaTypeNames.Application.Pdf, PDFFile);