0

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

那个原始Home页面,通过它的Index动作,就是所有的工作。我所有的“导入”控制器都派生自ComairRIController,而Home没有,但我什至尝试从我的一个控制器中删除此继承,并仅从 继承Controller,就像 一样Home,没有任何效果;我仍然得到404。

该项目构建时完全没有错误或警告,并且在打开 Home/Index 视图时运行良好。这里有什么问题?我该如何诊断?my 的构造函数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。

4

1 回答 1

0

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

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

于 2013-02-07T14:57:10.410 回答