アプリケーション (Umbraco CMS) で 404 エラーを処理できるようにするには、web.config で次の設定を行う必要があります。
<httpErrors existingResponse="PassThrough" />
Umbraco のカスタム 404 エラー ページの表示には適していますが、静的ファイルが見つからない場合の 404 エラー ページの表示には適していません。
たとえば、http://www.example.com/non-existing-file.pngは 404 ステータス コードを返しますが、respons は空白です。これは、次の PassThrough モードの説明に適合します。
PassThrough – existingResponse が「PassThrough」と表示される場合、カスタム エラー モジュールは常にモジュールからの応答を通過します。この設定により、モジュールにテキストが設定されていない場合、カスタム エラー モジュールは空白の応答を返します。( http://blogs.iis.net/ksingla/archive/2008/02/18/what-to-expect-from-iis7-custom-error-module.aspx )
「カスタムエラーモジュール」とは何ですか? また、空白以外の応答を返すにはどうすればよいですか?
アップデート
Umbraco で (デバッガーを使用して) 要求処理ルーチンをステップ実行した後、問題領域についての理解が深まりました。上記の引用に書かれているように、existingResponse="PassThrough" の場合、http エラーのすべての処理はカスタム モジュールで行われます。したがって、私自身の質問に答えるために、「カスタム エラー モジュール」はこの例では「UmbracoModule」です。
この問題を解決する 1 つの方法は、ディスク上の静的ファイルの存在をチェックする新しいカスタム モジュールを作成することです。IIS から静的ファイルのリストを読み取り、web.config から customErrors または httpErrors 要素の構成を読み取って、カスタム エラー ページを取得します。しかし、これは大雑把な解決策だと思います。むしろ、責任を IIS に戻したいと思います。
何か案は?