我创建了一个新的 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.

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