0

自分のプロジェクトにカスタム404と500のエラーを追加する方法を教えてもらえますか?カスタムエラーMVC 5

<customErrors mode="On"> 
    <error code="404" path="404.html" /> 
    <error code="500" path="500.html" /> 
</customErrors> 

答えて

0

コントローラからアクションメソッドは例外をスローした場合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つの他の場所で作品を複製することになります。

0

これは私が最近読んだ最高の記事です。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>