RealPath:
WebPath:
2016/11/08 17:47 (JST) 更新
Tipsその2 >>

エラーページのカスタマイズ

Contents

エラーが発生したとき、デフォルトだとシステマチックなエラーページが表示されてしまうので、これをカスタマイズする。

404 NOT FOUND

存在しないページへのアクセス時の表示。デフォルトでは以下のような表示になるかと思う。
img--600--size

これでも問題はないのだが、もうちょっと個性を出そう。

やり方その1

Web.config を編集。

  <system.webServer>
    ....
    <httpErrors errorMode="Custom" existingResponse="Replace">                    <!-- ★追加 -->
      <remove statusCode="404" subStatusCode="-1" />                              <!-- ★追加 -->
      <error statusCode="404" path="/Error/Error404" responseMode="ExecuteURL" /> <!-- ★追加 -->
    </httpErrors>                                                                 <!-- ★追加 -->
  </system.webServer>
  ....

この設定により、404 エラーが発生した場合には代わりに Error コントローラ の Error404 アクションが呼ばれた結果が表示されるようになります。
 
Controllers/ErrorController.cs を作成。
using System;
using System.Web.Mvc;

namespace WebApplication1.Controllers
{
    public class ErrorController : Controller
    {
        public ActionResult Error404()
        {
			Response.StatusCode = 404;
            return View();
        }
    }
}

 
Views/Error/Error404.cshtml を作成。

@{
    ViewBag.Title = "404 NOT FOUND";
}
<h2>ファイルが見つかりませんでした</h2>

 
結果
img--500--size

それっぽい表示(?)になりました。
気に入った形になるように Error404.cshtml を自由にカスタマイズすることができます。

やり方その2

Web.config<customErrors> というタグを設定することによっても同様の処理ができるのだが、ちょっとこのあたり挙動が怪しいので調査中。