IIS でカスタム エラー ハンドラ (実行 URL) を使用して、Windows 2008 R2 x64 上の ColdFusion 10 で 404 エラーを正しく処理するのに問題があります。以前のバージョンの CF でこれを問題なく実行しました。IIS の Web サイト機能で、「エラー ページ」を開き、すべての 404 エラーに対して「/404.cfm」を実行するように設定します。
私が抱えている問題は、404.cfm ページの出力がブラウザに完全に返されず、ページが正しく読み込まれないことです。何も返ってこないこともあれば、1K を返すこともあれば、もう少し多くを返すこともあります。非常に矛盾しています。
IIS で 404.cfm ハンドラーを設定するだけでなく、Application.cfm 内の onMissingTemplate() メソッドでも呼び出しています。
<cffunction name="onMissingTemplate"
returnType="boolean"
output="true">
<cfargument name="thePage" type="string" required="true">
<cftry>
<cfmodule template="../../../404.cfm" thePage="#Arguments.thePage#">
<cfcatch>
<cfoutput><p>An error occurred</p></cfoutput>
</cfcatch>
</cftry>
<cfreturn true />
</cffunction>
404.cfmエラー ハンドラ内で、次のように呼び出しています。
<cfheader statuscode="404" statustext="Not Found">
...そして、たくさんのものを出力します。
404.cfm で cfheader の呼び出しを削除すると、[ColdFusion リクエストの場合] エラー ハンドラが正しく読み込まれます。これは、IIS を通過するものは何もないためです。代わりに、ColdFusion の onMissingTemplate() メソッドを通過するだけです。しかし、応答ヘッダーには 200 ステータス コードが表示されます。これは問題です。明らかな理由から、404 ステータス コードである必要があります。
cfheader 呼び出しを含めた場合、またはColdFusion 以外のページが要求された場合 (IIS は 404 ステータス コードを生成します)、404.cfm ハンドラーの出力がブラウザーに完全には返されません。IISがアクションを手に入れることに関係があると思います。
CFバグデータベースでこれを報告しましたが、何か間違っているのではないかと思っています。バグはこちら: https://bugbase.adobe.com/index.cfm?event=bug&id=3488063