MVCの香りでELMAHを使用するこのアプローチをしていますか?
-
19-09-2019 - |
質問
私は404エラーを含むすべての例外のためにカスタムエラーページを使用できるようにASP.Net MVCでELMAHを使用するいくつかのアプローチを探しまわってきた。
<のhref = "HTTPSの不足ではありません://stackoverflow.com/questions/310580/how-can-i-make-a-catch-all-route-to-handle-404-page-not-found-queries-for-asp-n ">質問> /Shared/Error.aspxが正しく動作して取得する方法をを求めてASP.Net MVCで - とやELMAHなしのどちらか。私は、そのタスクに問題がなかったが、ELMAHと一緒にカスタム404ページを使用しての私の解決策があまりにも簡単だったと私はそれにもっとあるはずという気持ちを振り払うことができないかのような気がします。
のWeb.ConfigでのcustomErrorsを有効にした後、私は私にHomeControllerの新しいアクションを作成しました
public ActionResult PageNotFound()
{
return null;
}
は、そこから私は、前述のPageNotFound
ののActionResultに応答をリダイレクトし、例外が記録されますせた後、ELMAHのログフィルタリング機能を利用するために、私のGlobal.asaxファイルに新しいメソッドを追加します:
public void errorLog_Filtering(object sender, ExceptionFilterEventArgs e)
{
if (e.Exception.GetType().Equals(typeof(HttpException)))
{
HttpException ex = (HttpException)e.Exception;
if (ex.GetHttpCode() == 404)
Response.Redirect("/Home/PageNotFound");
}
}
(私はまだMVCについて多くのことのための私の方法を見つけることだから)、または簡単な解決策が存在する問題をoverthinking 私は、デフォルトではMVCが付属して何かを見下ろすだろうか?任意の入力に感謝します。
解決
私は、ASP.NETは、あなたのためのもののようなものを扱うことができると確信して、あなたは必ずしもあなたのglobal.asax内のあなたの404アクションにリダイレクトするために何かを呼び出す必要はありません。例えば、以下を参照してください。
<configuration>
<system.web>
<customErrors mode="On">
<error statusCode="404" redirect="/servererrors/404.aspx" />
</customErrors>
</system.web>
</configuration>