IIS 8.5强制使用不正确的Content-Length标头

时间:2014-11-13 03:54:34

标签: coldfusion coldfusion-10 windows-server-2012-r2 iis-8.5

我们有一个动态生成PDF文件并强制下载文件的应用程序。这段代码在Windows Server 2008上没有问题。从我可以看出,似乎IIS强制Content-Length值为749,而应该是83233.我已经尝试在应用程序代码和IIS中设置该值完全忽略它。

  • 已安装Microsoft的URL Rewrite,但此站点没有条目
  • 我已禁用静态和动态内容的压缩
  • 通过应用程序代码,我尝试设置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">

0 个答案:

没有答案