4

アプリでカスタム エラーを有効にしています。Web 構成には、次のようなエントリがあります。

<customErrors mode="On" defaultRedirect="~/Views/Shared/Error.cshtml">
  <error statusCode="403" redirect="~/Views/Shared/UnauthorizedAccess.cshtml"/>
  <error statusCode="404" redirect="~/Views/Shared/FileNotFound.cshtml"/>
</customErrors>

また、HandleError属性をグローバル アクション フィルターとして適用しています。私のFilterConfig読みは次のとおりです。

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new HandleErrorAttribute());
        }

さらに、フォルダにはデフォルトがError.cshtml定義されてい~/Views/Sharedます。

それでも、私のアプリケーションは IE の醜いデフォルト エラー ページを表示します。

アップデート

カスタム エラー ページが IE 以外のすべてのブラウザで正常に表示されることを確認しました。ここでの取引は何ですか?

更なるアップデート

ちょうどこの記事を見つけました。http://perishablepress.com/important-note-for-your-custom-error-pages/

IE は、カスタム エラー ページのサイズを少なくとも 512 バイトにすることを要求しています。カスタム エラー ページがそのサイズよりも小さい場合、独自の醜いエラー ページがスローされます。

最新の更新 エラー ページのペイロードを増やしたので、すべてが機能するようになりました。ただし、未処理の例外については、既定の Error.cshtml ページのみが表示されます。その他のステータス コードについては、web.config ファイルで指定した場所にカスタム エラー ページが見つからなかったことを示す ASP.NET 404 が表示されます。カスタム エラー ページはありますが、web.config で指定した正確な名前が付けられています。

4

1 に答える 1

2

(*.cshtml) Razor ファイルへのパスを設定する代わりに、コントローラーとアクションを介してルートを提供する必要があります。

期待どおりに動作させる方法は次のとおりです

<customErrors mode="Off" defaultRedirect="/home/error">
  <error statusCode="404" redirect="/home/notfound" />
</customErrors>

私のホームコントローラーには、エラーと呼ばれるアクションと、NotFound と呼ばれる別のアクションがあります。

[AllowAnonymous]
public class HomeController : Controller
{   
  public ActionResult Error()
  {
    var qs = HttpUtility.ParseQueryString(Request.Url.Query);
    var errorPath = qs["aspxerrorpath"];

    return View(model: errorPath);
  }

  public ActionResult NotFound()
  {
     return View();
  }

...
}
于 2014-06-01T22:57:05.253 に答える