背景: 公開されている 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>