エラーを処理し、404、403 などの適切なページを表示しようとしています。
そのために、ErrorHandling フィルターを作成しましたが、期待どおりに機能します。つまり、リクエストしようとすると
mysite.com/Home/random_non-existent_action
ユーザーはカスタム 404 ページにリダイレクトされ、応答コードとして 404 が返されます。401 と 403 についても同様です。
エラー処理フィルターとweb.configで次のように変更することでこれを達成しました:
ここから問題が始まります。顧客は、IIS のエラー ページもカスタマイズしたいと考えています。
mysite.com/images、
ディレクトリの参照が無効になっているため、IIS エラー ページが表示されています。これは IIS レベルで防止されているため、エラー処理フィルターが機能しません。
IIS エラー ページをオーバーライドするために、以下のコードを web.config に追加しました。
リクエストすると、customErrorsとhttpErrorsの両方がweb.configに存在するようになりました
mysite.com/Home/random_non-existent_action
カスタム 404 ページが表示されます (IIS によってバイパスされ、エラー処理フィルターが機能するため)。でもリクエストしたら
mysite.com/content
また
mysite.com/images
404 ステータス コードの空白の応答が返されます。
responseMode を (ExecuteURL ではなく) Redirect に変更すると、機能します。しかし、明らかに、相対パスを使用してカスタム エラー ページに移動しようとしています。
1-IIS カスタム エラー ページをオーバーライドしようとすると、空白の応答が返されるのはなぜですか?
2-responseMode="Redirect" を作成しても、responseMode="ExecuteURL" を作成しないと機能するのはなぜですか
多くの同様のstackoverflowトピックを検索しても成功しなかったため、どんな助けも大歓迎です。
私は、existingResponse と responseMode の値のすべての組み合わせを試しました。responseMode="Redirect" 以外のものは、対応するステータス コードで空白になります。
編集 :
私が最終的にやったことは、
HTML コンテンツを作成し、JavaScript を使用してカスタム エラー ページにリダイレクトします。