asp.net - IIS 7 似乎正在删除明确设置的内容类型。我怎么能阻止这个?

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

我有一个 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/

相关文章:

asp.net - HTML input 标签什么时候回传回车?

asp.net-mvc - 如何在 MVC 模块下禁用或重新调整 IIS DirectoryListingModule 的优先级?

c# - 将 Windows 用户名传递给网站

iis - 在相同IP但不同端口设置FTP?

C# 子类,同时保持名称。深巫术?

C#构造函数问题

jquery - 在 aspx 中从 jquery 调用函数背后的代码

c# - 想要写入文件,但可能同时有多个写入者,需要锁定

c# - 在一行中将字符串转换为 DateTime 可为空的变量

c# - Dapper-“必须声明标量变量@VersionId”