• 追加された行はこの色です。
  • 削除された行はこの色です。
* customErrorsで404等のエラーをカスタマイズする [#b6258377]
* 例外処理(エラーページ)基本 [#b6258377]

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

** ASP.NET MVCのエラーページを使うにはcustomErrorsのmodeをOnにする [#p5c7b85b]
** MVCのエラーページ [#bf1164f8]
- MVCのエラーページ(例外処理)は2つに分けられる。
-- ページが見つからない(HTTPコード404)、アクセス禁止(HTTPコード403)等の単純なエラーはWeb.configでcustomErrorsをOnにしてViews\Shared\Error.cshtmlの内容を表示する。(Error.cshtmlの表示はOnExceion()の既定の動作)
-- ビジネスロジック内での例外発生のようなエラーは、コントローラークラスのOnException()またはApplication_Error()を上書きして、例外発生時に実行されるようにする。

 <configuration>
   <system.web>
     <customErrors defaultRedirect="~/Error/" mode="RemoteOnly">
       <error statusCode="404" redirect="~/Error/NotFound" />
     </customErrors>
   </system.web>
 </configuration>
*** ビジネスロジックのエラーを処理する方法 [#h013b2a0]
- ビジネスロジックのエラーを処理するには以下のいずれかの方法を取る。
-- コントローラークラスのOnExcetionメソッドをオーバーライドする。
-- アクションメソッドに[HandleError]アトリビュートまたはカスタム例外フィルターアトリビュートを指定する。
-- global.asaxのApplication_Errorメソッドをオーバーライドする。

- ASP.NET MVCのエラーページを使う場合、Web.configで以上のように設定する。
- 上の場合、ErrorクラスとNotFoundメソッドを自作する必要がある。

*** 参考 [#gedadf26]
http://msdn.microsoft.com/ja-jp/library/h0hfz6fc(v=vs.100).aspx

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

** customErrorsとhttpErrors [#f4e61f93]
http://stackoverflow.com/questions/2480006/what-is-the-difference-between-customerrors-and-httperrors

** 参考 [#t9a8dd95]
http://miso-soup3.hateblo.jp/entry/20120926/1348657714



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