3

我们有一个动态生成 PDF 文件并强制下载文件的应用程序。此代码在 Windows Server 2008 上运行没有问题。据我所知,IIS 似乎将 Content-Length 的值强制为 749,而它应该是 83233。我尝试在应用程序代码和 IIS 中设置该值完全忽略它。

  • 已安装 Microsoft 的 URL 重写,但该站点没有条目
  • 我已禁用静态和动态内容的压缩
  • 通过应用程序代码,我尝试设置 Content-Length 标头并将 X-Content-Length 标头设置为相同的值。这就是我确定该值被 IIS 覆盖的方式
  • 当我通过 ColdFusion 的内置 Web 服务器点击相同的 URL 时,下载工作没有问题。这就是为什么我知道这是 IIS 或 IIS 和 ColdFusion 之间的连接器的问题。

这是来自服务器的响应标头

Response Headers
-------------------------------------------------------------
Connection: close
Content-Length: 749
Content-Type    : application/pdf;charset=UTF-8
Date: Thu, 13 Nov 2014 03:36:03 GMT
Server: Microsoft-IIS/8.5
X-Content-Disposition: attachment;filename=LasVegas.pdf
X-Content-Length    :83233
X-Powered-By    :ASP.NET

这是代码

<cfcontent reset="true"/>
<cfset variables.temporaryFilePath = "C:\inetpub\wwwroot\LasVegas.pdf">
<cfheader name="Content-Length" value="#getFileInfo(variables.temporaryFilePath).size#"/>
<cfheader name="X-Content-Length" value="#getFileInfo(variables.temporaryFilePath).size#"/>
<cfheader name="X-Content-Disposition" value="attachment;filename=LasVegas.pdf">
<cfcontent type="application/pdf" file="#variables.temporaryFilePath#" deleteFile="no">
4

0 回答 0