0

カスタム 404 および 500 エラーをプロジェクトに追加する方法を誰かに説明してもらえますか? これをWeb.configに追加してみました:

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

2 に答える 2

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>
于 2016-05-11T00:19:54.030 に答える
0

コントローラーからのアクション メソッドが例外をスローすると、OnException メソッドが呼び出されます。HandleErrorAttribute とは異なり、404 やその他の HTTP エラー コードもキャッチし、customErrors をオンにする必要はありません。

これは、コントローラーで OnException メソッドをオーバーライドすることによって実装されます。

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"
};
}

filterContext.ExceptionHandled プロパティを使用すると、例外が以前の段階で処理されたかどうかを確認できます (例: HandleErrorAttribute)。

if (filterContext.ExceptionHandled) 戻ります。インターネット上の多くのソリューションでは、基本コントローラー クラスを作成し、OnException メソッドを 1 か所に実装してグローバル エラー ハンドラーを取得することを提案しています。

ただし、これは理想的ではありません。これは、OnException メソッドのスコープが HandleErrorAttribute とほぼ同じくらい制限されているためです。少なくとも 1 つの別の場所で作業を複製することになります。

于 2016-05-10T23:39:17.093 に答える