5

背景: 公開されている ASP.NET MVC4 アプリケーションで、不適切な URL への受信要求を受信することがあります。リファラーは外部からのものであるため、私のアプリは私の制御外です (私は自分のアプリで悪い URL を生成していません)。したがって、MVC は正しく例外を発生させ、ユーザーにはカスタム エラー ページが表示されます。global.asax は、エラーをメールで送信するようにコード化されています。

問題。URL が正しくありませんが、予期しないエラーが表示されます。

例: - ユーザーが (外部 URL から) /Blog/View に移動する - ブログ コントローラーに View アクションがない - ユーザーに Error500 カスタム エラー Web ページが表示される - メールで受け取るエラー:

ビュー「エラー」またはそのマスターが見つからないか、検索された場所をサポートするビュー エンジンがありません。次の場所が検索されました: ~/Views/Blog/Error.aspx ~/Views/Blog/Error.ascx ~/Views/Shared/Error.aspx ~/Views/Shared/Error.ascx ~/Views/Blog/Error. cshtml ~/Views/Blog/Error.vbhtml ~/Views/Shared/Error.cshtml ~/Views/Shared/Error.vbhtml

ASP.NET MVC4 が "Error" という名前のビューを探している理由と、MVC が web.config で指定されたビュー (Error500) を検索しない理由がわかりません。該当するソース ファイルは次のとおりです。

Web.Config:

<customErrors mode="RemoteOnly" defaultRedirect="~/Error/Error500">
  <error statusCode="404" redirect="~/Error/Error404" />
</customErrors>

ErrorController ファイル:

   public class ErrorController : Controller
   {
       public ActionResult Error500()
       {
           return View();
       }

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

Error404.cshtml ファイル (/Views/Error フォルダーにあります):

   @{
       ViewBag.Title = "Oops...";
       Layout = "~/Views/Shared/_Layout.cshtml";
   }

   <h1>That's interesting</h1>
   <p>The page you were looking for could not be found.</p>

Error500.cshtml ファイル (/Views/Error フォルダーにあります):

@{
    ViewBag.Title = "Oops...";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h1>We're sorry about that</h1>
<p>Something unexpected just happened.  Our IT staff has been notified...time to code a hot-fix!</p>
4

1 に答える 1