背景:在面向公众的 ASP.NET MVC4 应用程序中,有时我会收到对错误 URL 的入站请求。推荐人来自外部,所以我的应用程序不受我的控制(我没有在我的应用程序中生成错误的 URL)。所以 MVC 正确地引发了一个异常并且用户看到了自定义错误页面。global.asax 被编码为通过电子邮件将错误发送给我。
问题。尽管 URL 不正确,但我收到的错误是出乎意料的。
例如: - 用户(从外部 URL)导航到 /Blog/View - 博客控制器没有查看操作 - 用户看到 Error500 自定义错误网页 - 我通过电子邮件收到的错误是:
未找到视图“错误”或其主视图,或者没有视图引擎支持搜索的位置。搜索了以下位置:~/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 正在寻找一个名为“错误”的视图,以及为什么 MVC 不搜索 web.config 中指定的视图 (Error500)。以下是适用的源文件:
网络配置:
<customErrors mode="RemoteOnly" defaultRedirect="~/Error/Error500">
<error statusCode="404" redirect="~/Error/Error404" />
</customErrors>
错误控制器文件:
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>