URLに「.」が混ざると,ASP.NET でエラーページがでてしまう問題の解決法.(調査中...)
エラーページ
- 独自のエラーページ 自分でリダイレクトするように設定する
- IISのエラーページ
- ASP.NETのエラーページ
ASP.NETのエラーページが出てしまうパターンと対策
**URLの最後に「.」が付いてしまう場合**に下記のようなページが出る.- 対策1 relaxedUrlToFileSystemMapping=“true"に設定するこの場合,「URLが有効な Windows ファイル パスであるかの検証」が無効になるため,推奨できない(と思われる). URLに指定されるパラメータに様々な文字列が含まれる可能性があり,その文字列がWindowsファイルシステムと同じ規則でバリデートされると困る場合は,これを設定すると解決できるようだ.参考:http://stackoverflow.com/questions/3541426/how-to-get-asp-net-mvc-to-match-dot-character-at-the-end-in-a-route
- 対策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に到達する前段階でのエラーのため対策ができない.