【F# + ASP.NET MVC】 例外発生時にカスタム・エラーページを表示するには

◆ Web.config

<configuration>
  <system.web>
    <!-- 
    カスタム・エラーページの設定
    defaultRedirect属性を指定することにより、
      1./Views/コントローラ名/defaultRedirect属性.cshtml
      2./Views/コントローラ名/defaultRedirect属性.cshtml
      3./Views/Shared/defaultRedirect属性.cshtml
      4./Views/Shared/defaultRedirect属性.cshtml
    順にビューを検索する。
    -->
    <customErrors mode="On" defaultRedirect="Error">
      <!-- カスタム・エラーページ で例外が発生した場合、ErrorLast.htm を表示-->
      <error statusCode="500" redirect="/ErrorLast.htm" />
    </customErrors>
  </system.web>

◆ Controller

namespace Sample.Controllers

open System.Web
open System.Web.Mvc
open System.Collections.Generic

type HomeController() =
    inherit Controller()

    // カスタム・エラーを有効化
    [<HandleError>]
    member this.Index () =
        // 例外を発生させる
        raise (System.Exception("例外が発生"))
        this.View() :> ActionResult

◆ /Views/Shared/Error.cshtml

<!DOCTYPE html>
<html>
<head>
    <title>Error</title>
</head>
<body>
    <div>
        <ul>
            <li>【例外名】
                @Html.Encode(Model.Exception.GetType().Name)</li>
            <li>【メッセージ】
                @Html.Encode(Model.Exception.Message)</li>
            <li>【発生元】
                @Html.Encode(Model.ControllerName)
                /@Html.Encode(Model.ActionName) アクション</li>
        </ul>
    </div>
</body>

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中