所以我一直有这个问题暂时试图返回pdf内联响应.我通过帮助编码页面搜索了这个问题的答案,但找不到有用的东西.我做了一个简化的例子,说明我在下面做的事情.但核心与实际生产完全相同.这个问题并不总是会发生,但它确实很烦人.这几乎就像是一些奇怪的计时问题或其他我没看到的事情.
我得到此错误System.Web.HttpException(0x80004005):找不到文件—> System.Web.HttpException(0x80004005):在发送HTTP标头后,服务器无法追加标头.
有谁知道如何解决这一问题??
[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);