【发布时间】:2013-01-17 00:21:41
【问题描述】:
背景: 在面向公众的 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 正在寻找一个名为“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>
【问题讨论】:
-
嗨,巴萨姆。感谢您的链接。在发布之前和现在,我多次阅读了该问题和答案。我认为它不适用,因为我对全局的 Application_Error 没有任何问题,我没有使用 Elmah,而且我没有任何对我可以找到的错误操作或视图的胭脂引用。当我没有指定它应该时,它似乎 MVC 正在尝试查找错误。我相信我已经遵循了典型的约定,但是 MVC 没有呈现我的 /Views/Error/Error500 视图。
-
@ErikOlson 你能解决这个问题吗?我也面临同样的问题。
标签: c# asp.net-mvc razor asp.net-mvc-4 error-handling