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

我正在使用第三方软件从html文档渲染PDF。我创建了一个小型测试项目,并使用OnClick<asp:Button>事件能够从目录中读取html文档并将其呈现为PDF,而没有任何问题。
响应创建如下:

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();

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

内容处置:内联; filename = HtmlToPdf.pdf;
内容长度:101482
内容类型:应用程序/ pdf

我试图将以上内容转移到我当前的项目中。唯一的区别是,我在DevExpress网格视图内使用了自定义按钮,而不是一个<asp:Button>。我最初处理了回调面板中的自定义按钮单击,但是未设置Content-Type。在Chrome中查看响应证明了这一点:

内容处置:内联; filename = 5.pdf;
内容编码:gzip
内容长度:149015
内容类型:文本/纯文本;字符集= utf-8

我也尝试使用gvDocuments.CustomButtonCallback += new ASPxGridViewCustomButtonCallbackEventHandler(gvDocuments_CustomButtonCallback);事件,但仍未设置Content-Type。
关于在上述情况下为什么无法设置Content-Type的任何人都有想法?

参考方案

你可以试试

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

response.ContentType =“应用程序/ pdf”;

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

希望它能工作:)

带大文件的flask make_response - python

因此,我对文件I / O和内存限制等一无所知,并且我很难让我的Web应用程序成功地将大文件下载提供给带有flask make_response的Web浏览器。以下代码适用于较小的文件(<〜1GB),但是进入较大文件时会出现MemoryError异常:raw_bytes = "" with open(file_path, '…

在返回'Response'(Python)中传递多个参数 - python

我在Angular工作,正在使用Http请求和响应。是否可以在“响应”中发送多个参数。角度文件:this.http.get("api/agent/applicationaware").subscribe((data:any)... python文件:def get(request): ... return Response(seriali…

LeetCode题解86.partition-list

题目地址 https://leetcode.com/problems/partition-list/description/ 题目描述 Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than o…

在循环的第一次迭代中添加值 - c#

我正在使用以下代码,我需要将键和值连接起来,但是edit属性应仅在开始时(仅在第一次使用时)添加到字符串中,我该怎么做?我尝试为当前列表找到索引,但没有成功...任何想法吗?string Meassage = null; foreach (var current in PropList) { Meassage = "edit:" + cu…

我使用了克隆,但原始数组仍然受到影响 - java

我正在尝试用Java编写3x3平方移位的难题求解器。但是,我被困在移动块的那一部分上-我使用的算法一直以一堆新的空白结尾。经过一些测试后,我确定这是因为,尽管我使用了clone()命令,但当我更改“ current”时,v的数组仍然受到影响。有谁知道这是为什么以及我该如何解决?我以为使用克隆后,可以在不影响旧阵列的情况下更改新阵列。 if (!rightwa…