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に到達する前段階でのエラーのため対策ができない.