自分のプロジェクトにカスタム404と500のエラーを追加する方法を教えてもらえますか?カスタムエラーMVC 5
<customErrors mode="On">
<error code="404" path="404.html" />
<error code="500" path="500.html" />
</customErrors>
自分のプロジェクトにカスタム404と500のエラーを追加する方法を教えてもらえますか?カスタムエラーMVC 5
<customErrors mode="On">
<error code="404" path="404.html" />
<error code="500" path="500.html" />
</customErrors>
コントローラからアクションメソッドは例外をスローした場合onExceptionをメソッドが呼び出され:私はWeb.configファイルにこれを添加することによって試みました。 HandleErrorAttributeとは異なり、404やその他のHTTPエラーコードも捕捉され、カスタムエラーをオンにする必要はありません。
これは、コントローラにonExceptionをメソッドをオーバーライドすることで実装されます。例外は、早い段階で(例えばHandleErrorAttributeを)処理されたかどうかをチェックすることができますfilterContext.ExceptionHandledプロパティで
protected override void OnException(ExceptionContext filterContext)
{
filterContext.ExceptionHandled = true;
// Redirect on error:
filterContext.Result = RedirectToAction("Index", "Error");
// OR set the result without redirection:
filterContext.Result = new ViewResult
{
ViewName = "~/Views/Error/Index.cshtml"
};
}
:
if(filterContext.ExceptionHandled) return; インターネット上の多くのソリューションは、ベースコントローラクラスを作成し、OnExceptionメソッドを1か所に実装してグローバルエラーハンドラを取得することを推奨しています。
しかし、OnExceptionメソッドがそのスコープ内のHandleErrorAttributeとほぼ同じくらい制限されているため、これは理想的ではありません。少なくとも1つの他の場所で作品を複製することになります。
これは私が最近読んだ最高の記事です。http://benfoster.io/blog/aspnet-mvc-custom-error-pages に入る喜びを知りましょう。私のcustomErrors要素はこのように見えます。
<customErrors mode="Off" redirectMode="ResponseRewrite">
<error statusCode="404" redirect="/404.aspx" />
<error statusCode="500" redirect="/500.aspx"/>
</customErrors>