为什么我在复制到新MVC4项目的所有控制器上获得HTTP 404?

时间:2013-02-07 14:52:50

标签: asp.net-mvc asp.net-mvc-4

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

原始Home页面通过其Index操作完成了所有工作。我的所有“导入”控制器都来自ComairRIController,而Home却没有,但我甚至尝试从我的一个控制器中删除此继承,只是继承自Controller,就像{Home一样。 1}},没有效果;我仍然得到404.

项目构建时没有任何错误或警告,并且可以正常打开Home / Index视图。这可能有什么问题?我怎么诊断这个?我的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记录一个错误,错误是(为了简洁我省略了堆栈跟踪):

<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;

有趣的是,对Elmah.axd的请求也会返回404。

1 个答案:

答案 0 :(得分:0)

您提到您复制了现有项目中的一些组件,但没有提及您是否复制了除了Home / Index操作之外的任何内容。

对于任何其他控制器,是否没有匹配的视图?