服务器无法在HTTP标头发送后添加标头c#pdf inline
问题描述:
所以我一直有这个问题一段时间试图返回一个PDF内联响应。我搜索了所有通过帮助编码页面寻找答案,并找不到有效的东西。我在下面做了一个简单的例子。但核心与实际生产完全相同。这个问题并不总是会发生的,但是当它发生时它很烦人。这几乎就像是一些奇怪的计时问题或其他我没有看到的事情正在发生。 (0x80004005):找不到文件---> System.Web.HttpException(0x80004005):服务器在发送HTTP头之后无法追加头文件。服务器无法在HTTP标头发送后添加标头c#pdf inline
有谁知道如何解决这个问题?
[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);
请注意,您要创建无效的内容部署值情况下,你的文件名包含空格,某些分隔符,或者非ASCII字符之前,必须清除页眉。有关详细信息,请参阅RFC 6266。 – 2016-02-19 14:43:20