C# 更改自定义Http404错误页的默认视图文件夹

C# 更改自定义Http404错误页的默认视图文件夹,c#,asp.net-mvc-3,http-status-code-404,global-asax,viewengine,C#,Asp.net Mvc 3,Http Status Code 404,Global Asax,Viewengine,我想在我的asp.net mvc3网站中自定义错误页 因此,我发现了这篇非常有用的帖子:而且效果很好 但是,我的Http404.cshtml文件不在Views默认文件夹中。它位于名为baseview的文件夹中。 我已经在该文件夹中有了我的\u Layout.cshtml和其他视图或局部视图 默认情况下,ViewEngine不检查此文件夹(它只检查视图文件夹以及我的区域的所有视图文件夹)。因此,我使用了ViewEngineExtension并将其添加到我的Global.asax的应用程序的Star

我想在我的asp.net mvc3网站中自定义错误页

因此,我发现了这篇非常有用的帖子:而且效果很好

但是,我的
Http404.cshtml
文件不在
Views
默认文件夹中。它位于名为
baseview
的文件夹中。 我已经在该文件夹中有了我的
\u Layout.cshtml
和其他视图或局部视图

默认情况下,
ViewEngine
不检查此文件夹(它只检查
视图
文件夹以及我的
区域的所有
视图
文件夹)。因此,我使用了ViewEngineExtension并将其添加到我的
Global.asax
应用程序的
Start()中的
System.Web.Mvc.ViewEngines
集合中。我的所有应用程序都运行良好,可以访问我的布局和其他
baseview
内容

对于
Global.asax
应用程序的
,我不能说同样的情况。此方法忽略上一个视图引擎,只查看默认视图文件夹。 我试图在
应用程序中添加我的viewEngineeExtension\u Error()
方法,如so
ViewEngines.Engines.add(new BaseViewsEngineExtension())但它不会改变任何东西。这与我在
应用程序\u Start()
中使用的行完全相同

有关
应用程序错误()
,请参阅我的代码:


我的问题是:如何强制
errorController.Excecute(rc)
视图引擎在
baseview
文件夹中搜索我的Http404.cshtml视图?

更改
Http404
操作以返回其视图的完整路径。

正如SLaks所说,您应该在errorController中返回视图的完整路径

  public class ErrorController : Controller
  {
      public ActionResult Http404()
      {
          return View("~/BaseViews/Error/Http404.cshtml");
      }
  }
但是它不会工作,因为您的错误被覆盖,所以您无法得到预期的结果。 要绕过此问题,您可以告诉您的应用程序,应用程序中的一切正常。\u错误如下:

Request.StatusCode = 200;

我希望它能解决你的问题。

我不太明白你的意思?你能说得更具体一点吗?我仍然不知道如何在
应用程序错误中定义视图引擎,但这并不重要。将
StatusCode
更改为200即可,谢谢。
Request.StatusCode = 200;