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

asp.net – IIS 7似乎正在删除显式设置的内容类型.我怎么能阻止

发布时间:2020-12-16 09:35:42 所属栏目:asp.Net 来源:网络整理
导读:我有一个C#页面,它生成一个PDF文件并将其返回给用户.我明确地将Content-Type标头设置为“application / pdf”,并且在IIS中注册了MIME类型,但IIS似乎正在剥离Content-Type. 该文件正在正确返回,如果我选择将其保存到磁盘,我可以打开它就好了.如果我从ASP.NET
我有一个C#页面,它生成一个PDF文件并将其返回给用户.我明确地将Content-Type标头设置为“application / pdf”,并且在IIS中注册了MIME类型,但IIS似乎正在剥离Content-Type.

该文件正在正确返回,如果我选择将其保存到磁盘,我可以打开它就好了.如果我从ASP.NET开发服务器运行页面,Content-Type标题就可以了.

代码…

byte[] pdf = //magic!
string filename = "Some.pdf";

Response.Clear();
Response.ClearHeaders();
//This way didn't work either...
//Response.ContentType = "application/pdf";
Response.AddHeader("Content-Type","application/pdf");
Response.AddHeader("Content-Disposition","attachment; filename=" + filename + ";size=" + pdf.Length.ToString());
Response.Flush();
Response.BinaryWrite(pdf);
Response.Flush();
Response.End();

解决方法

我目前正在运行一些非常相似的东西(它允许用户下载代码背后生成的TXT文件).

基本相同的代码,但我没有Response.Flush().您可以尝试同时评论.刷新并查看会发生什么.

编辑这是我的代码(成功让用户下载TXT文件

string filename = "myfile.txt"; //made up filename
Response.AddHeader("Content-disposition","attachment; filename=" + filename);
Response.ContentType = "application/octet-stream";

byte[] data = new byte[Encoding.UTF8.GetByteCount(_r)]; //_r is a string containing my txt
data = Encoding.UTF8.GetBytes(_r);
Response.ContentEncoding = Encoding.UTF8; // handling special chars
Response.BinaryWrite(data); 
Response.End();

(编辑:李大同)

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

    推荐文章
      热点阅读