找不到视图“错误”或其主视图 - web.config 未指定“错误”视图

本文关键字:错误 视图 web config 未指定 找不到 主视图 | 更新日期: 2023-09-27 17:56:56

>背景:在面向公众 ASP.NET MVC4 应用程序上,有时我会收到对错误 URL 的入站请求。引荐来源来自外部,所以我的应用程序不受我的控制(我没有在我的应用程序中生成错误的 URL)。 因此,MVC 正确地引发异常,用户会看到自定义错误页面。global.asax 被编码为通过电子邮件将错误发送给我。

问题。虽然URL不好,但我收到的错误是意外的。

前任:- 用户导航(从外部 URL)到/博客/视图- 博客控制器没有查看操作- 向用户显示 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>

找不到视图“错误”或其主视图 - web.config 未指定“错误”视图

您确定用户访问的 URL 不存在吗?从我刚刚制作的一个小重现来看,如果操作方法不存在,这将按预期工作。当在路由解析的操作方法中引发错误并且您正在使用 HandleErrorAttribute 时,您将收到您提到的错误。您的路由是什么样的?

此外,在错误时向自己发送电子邮件并不是接收有关您的应用程序错误的可持续途径!您应该查看错误日志记录服务来为您处理此问题。我推荐Bugsnag。(免责声明:我在Bugsnag :)工作)