HttpContext.Current.Response.AddHeader()未设置Content-Type标头

时间:2013-11-25 15:08:44

标签: c# asp.net pdf webforms httpresponse

我正在使用第三方软件从html文档呈现PDF。我创建了一个小型测试项目,并使用OnClick的{​​{1}}事件,我能够从目录中读取html文档,并将其呈现为PDF,没有任何问题。

响应创建如下:

<asp:Button>

当我查看Chrome中的响应时,我可以看到正确设置了Content-Type:

  

内容处置:直列;文件名= HtmlToPdf.pdf;

     

的Content-Length:101482

     

内容类型:应用/ PDF

我已尝试将上述内容转移到我当前的项目中。唯一的区别是,我在DevExpress网格视图中使用自定义按钮而不是HttpContext.Current.Response.Clear(); HttpContext.Current.Response.AddHeader("Content-Type", "application/pdf"); HttpContext.Current.Response.AddHeader("Content-Disposition", String.Format("{0}; filename=Test.pdf;", "inline" )); HttpContext.Current.Response.BinaryWrite(pdfBuffer); HttpContext.Current.ApplicationInstance.CompleteRequest(); 。我最初在回调面板中处理了自定义按钮单击,但未设置Content-Type。在Chrome中查看响应证明了这一点:

  

内容处置:直列;文件名= 5.pdf;

     

内容编码:gzip

     

的Content-Length:149015

     

内容类型:文本/无格式;字符集= UTF-8

我也尝试使用<asp:Button>事件,但仍没有设置Content-Type。

任何人都有任何想法,为什么我不能在上述场景中设置Content-Type?

2 个答案:

答案 0 :(得分:6)

你可以尝试

HttpResponse response = HttpContext.Current.Response;
response.ClearContent();
response.Clear();
  

response.ContentType =&#34; application / pdf&#34 ;;

response.AddHeader("Content-Disposition", "attachment; filename=" + yourFileName + ".pdf");
stream.WriteTo(response.OutputStream);
response.Flush();
response.End();

希望它有效:)

答案 1 :(得分:0)

.content{
     width: 240px;
     overflow-x: scroll;
     overflow-y: hidden;
     max-height:100px;
     height:100px;
     display:flex;
   }
   .div1{
     height: 300px;
     min-width: 100px;
     border: solid 1px #000000;
     background-color: #0066CC;
   }

通过在页面中添加上述行,load / init方法将添加http响应头。