Asp.net mvc 为什么我在复制到新MVC4项目的所有控制器上都使用HTTP 404?
我创建了一个新的MVC4项目,因为在我正在处理的项目中,我处理了太多默认的模板化内容。我将身份验证设置为“无”,并复制了许多组件,例如控制器、基类、视图模型、验证器(流畅验证)等。我保留了原始的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 项目生成时没有任何错误或警告,并且在打开主视图/
主页
控制器和视图
原来的主页
页面,通过它的索引
操作,就是一切工作。我所有的“导入”控制器都源于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.