我有一个 C# 页面,它生成一个 PDF 文件并将其返回给用户。我明确地将 Content-Type header 设置为“application/pdf”,并且 MIME 类型已在 IIS 中注册,但 IIS 似乎正在剥离 Content-Type。
文件被正确返回,如果我选择将它保存到磁盘,我可以很好地打开它。如果我从 ASP.NET 开发服务器运行页面,则 Content-Type header 通过就好了。
编码...
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()
任何地方。您可以尝试同时评论 .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();
关于asp.net - IIS 7 似乎正在删除明确设置的内容类型。我怎么能阻止这个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7930325/