customErrorsで404等のエラーをカスタマイズする

ASP.NET MVCのエラーページとASP.NET(IIS)のエラーページ

  • ASP.NET MVCで扱うエラーページは大きく2つに分けられる。
  • 一つはASP.NET MVCのエラーページ、
  • もう一つはASP.NET(IIS)のエラーページ。
  • エラーページにデバッグ情報を表示する、ウェブデザインを非エラーページと同様にする等、ページを作りこむ場合はASP.NET MVCのエラーページを使う。
  • なお、ビジネスロジックで発生するようなエラーは、customErrorsではなく、OnException()もしくはApplication_Error()を使ってエラー処理する。

ASP.NET MVCのエラーページを使うにはcustomErrorsのmodeをOnにする

 <configuration>
   <system.web>
     <customErrors defaultRedirect="~/Error/" mode="RemoteOnly">
       <error statusCode="404" redirect="~/Error/NotFound" />
     </customErrors>
   </system.web>
 </configuration>
  • ASP.NET MVCのエラーページを使う場合、Web.configで以上のように設定する。
  • 上の場合、ErrorクラスとNotFoundメソッドを自作する必要がある。

参考

http://msdn.microsoft.com/ja-jp/library/h0hfz6fc(v=vs.100).aspx

customErrorsより優先されるエラー

  • コントローラー内でエラーが発生した場合、OnException()メソッドが呼ばれて、ここでエラー処理される。
  • デフォルトでは、return View("Error")されて、Views\Shared\Error.cshtmlが表示される。
  • また、全てのエラーを一括でキャッチするには、Gobal.asaxのApplication_Error()にエラー処理を書く。
  • customErrorsは、上のようなOnException()やApplication_Error()に処理がない状態で例外が発生した場合に、customErrorsへHTTPリダイレクトされた上で実行される。

customErrorsとhttpErrors

http://stackoverflow.com/questions/2480006/what-is-the-difference-between-customerrors-and-httperrors

参考

http://miso-soup3.hateblo.jp/entry/20120926/1348657714


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS