IIS 7似乎正在删除显式设置的内容类型。我怎么能阻止这个?

时间:2011-10-28 14:08:12

标签: asp.net iis-7 c#-3.0 http-headers content-type

我有一个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();

1 个答案:

答案 0 :(得分:1)

我目前运行起来非常相似(它允许用户下载代码背后生成的TXT文件)。

基本上与你的代码相同,但我没有Response.Flush()。您可以尝试对两个.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();