Asp.net mvc 为什么我在复制到新MVC4项目的所有控制器上都使用HTTP 404?

Asp.net mvc 为什么我在复制到新MVC4项目的所有控制器上都使用HTTP 404?,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,我创建了一个新的MVC4项目,因为在我正在处理的项目中,我处理了太多默认的模板化内容。我将身份验证设置为“无”,并复制了许多组件,例如控制器、基类、视图模型、验证器(流畅验证)等。我保留了原始的主页控制器和视图 原来的主页页面,通过它的索引操作,就是一切工作。我所有的“导入”控制器都源于ComairricController,而Home则不是,但我甚至尝试从我的一个控制器中删除此继承,只是从控制器继承,就像Home,没有任何效果;我仍然得到404 项目生成时没有任何错误或警告,并且在打开主视图/

我创建了一个新的MVC4项目,因为在我正在处理的项目中,我处理了太多默认的模板化内容。我将身份验证设置为“无”,并复制了许多组件,例如控制器、基类、视图模型、验证器(流畅验证)等。我保留了原始的
主页
控制器和视图

原来的
主页
页面,通过它的
索引
操作,就是一切工作。我所有的“导入”控制器都源于
ComairricController
,而
Home
则不是,但我甚至尝试从我的一个控制器中删除此继承,只是从
控制器继承,就像
Home
,没有任何效果;我仍然得到404

项目生成时没有任何错误或警告,并且在打开主视图/索引视图时运行良好。这里可能出了什么问题?我如何诊断这个?我的
ComairRIController
的构造函数甚至没有被调用,因此请求根本就没有进展

我正在使用默认路由配置:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}
重要信息:源项目(纯MVC4)和目标项目(Orchard模块)具有完全相同的名称和默认名称空间。我故意这样做是为了尽可能避免名称空间不匹配

新信息:我通过NuGet添加了Elmah 2.0.2,并将其设置为登录到XML文件。它为每个404记录一个错误,错误是(为了简洁起见,我省略了堆栈跟踪):


您提到从现有项目中复制了一些组件,但没有提到是否复制了视图中除“主视图/索引”操作之外的任何内容


是否可能没有与您的任何其他控制器匹配的视图?

您的路由是什么样子的?您是否可以发布您正在使用的示例视图和控制器?我再次请求您查看包含控制器的名称空间和文件夹。我以前遇到过这个问题,这是因为我的控制器包含在区域或其他文件夹中。查看您的working Home控制器以及每个控制器的名称空间。我说我“复制了很多组件,例如控制器、基类、视图模型、验证器(流畅验证)等等”。一切都在它应该在的地方。如果看不到故障控制器中包含的代码,这很难诊断。从一个单独的项目复制了多个项之后,我建议您仔细检查导入的控制器的名称空间。
<error errorId="db2b4236-b913-4b98-878e-f3e02fdff321" 
    application="/" 
    host="7F3KH5J" 
    type="System.Web.HttpException" \
    message="The controller for path '/ApplicantProfile/Start' was not found or does not implement IController." 
    source="System.Web.Mvc" 
    detail="System.Web.HttpException (0x80004005): The controller for path '/ApplicantProfile/Start' was not found or does not implement IController.&#xD;&#xA;