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">