加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在已经发送c#pdf内联的HTTP标头后,服务器无法附加标头

发布时间:2020-12-16 07:31:41 所属栏目:百科 来源:网络整理
导读:所以我一直有这个问题暂时试图返回pdf内联响应.我通过帮助编码页面搜索了这个问题的答案,但找不到有用的东西.我做了一个简化的例子,说明我在下面做的事情.但核心与实际生产完全相同.这个问题并不总是会发生,但它确实很烦人.这几乎就像是一些奇怪的计时问题或
所以我一直有这个问题暂时试图返回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",PDFFile));
Response.BufferOutput = true;
return File(PDFStream,MediaTypeNames.Application.Pdf);
}
else
return File(PDFStream,PDFFile);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读