【发布时间】:2011-12-29 17:40:38
【问题描述】:
我有一个 .aspx 页面,我在其中手动设置标题以强制下载 pdf 文件。它在 IE 中运行良好,但在 chrome 和 firefox 8.0 中,它给出了一个错误。
我终于找到了问题的根源,即 content-disposition 标头被发送了两次,但我不知道第一次设置的方式或原因。
标题的第一个实例只是: 内容配置:附件 第二个是: 内容处置:附件; filename=download.pdf
IIS 是否以某种方式接管并添加第一个标头实例?如果是这样,我怎样才能将其切换为不这样做?
编辑:添加设置标题的代码
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);
Response.WriteFile(fname);
Response.Flush();
Response.End();
【问题讨论】:
-
你能发布你知道设置其中之一的代码吗?另外,你确定它没有被执行两次吗?
-
添加了设置标题的代码......我很肯定它不会被执行两次。
-
大胆猜测:如果不设置类型,检查会发生什么。不相关:您的代码会对包含空格、非 ASCII 等的文件名执行错误操作...请参阅 RFC 6266。
-
删除了类型声明...没有变化。
-
你是在本地运行吗?如果是这样,您是否有任何自定义 HttpModules 可以添加它?这是一个奇怪的想法,但这是一个奇怪的问题。
标签: .net iis http-headers content-disposition