URLに「.」が混ざると、ASP.NET でエラーページがでてしまう問題の解決法。
エラーページ
- 独自のエラーページ(自分でリダイレクトするように設定する)
- IISのエラーページ
- ASP.NETのエラーページ
ASP.NETのエラーページが出てしまうパターンと対策
URLの最後に「.」が付いている場合
- 下記のようなページが出る
- 対策1
relaxedUrlToFileSystemMapping=”true”に設定するこの場合、「URLが有効な Windows ファイル パスであるかの検証」が無効になるため、推奨できない(と思われる)。
URLに指定されるパラメータに様々な文字列が含まれる可能性があり、その文字列がWindowsファイルシステムと同じ規則でバリデートされると困る場合は、これを設定すると解決できるようだ。
(参考)
- 対策2
Web.configを下記の通り変更する
変更前:<httpErrors errorMode=”Custom” existingResponse=”Auto”>
変更後:<httpErrors errorMode=”Custom” existingResponse=”Replace”>
IISが用意したレスポンスが存在した場合に
2.IISのエラーページが返されてしまうが、この対策によって必ずカスタムエラーページを返すように設定できる。
- 対策3
relaxedUrlToFileSystemMapping=”true”
と、
existingResponse=”Auto”
を設定する。
(これがベストみたい。)
ちなみに、MSDNのページも、URLの最後に「.」がついていると、ASP.NETのエラーページが出でしまっている。
また、URLの最後に「%」が付く場合、400(Bad Request)エラーとなり、下記のページが表示される。
Configuring HTTP Error Responses in IIS 7 によると、カスタムエラーページを表示させることはできないようだ。
このケースは、ASP.NETに到達する前段階でのエラーのため対策ができない。