我知道此错误已经出现过,但这似乎有点特殊。
我一直在使用基于ASP.NET MVC 4的ReactJS设置SPA。我在使用我的机器上工作时没有任何问题。但是,我看到的一个奇怪的问题是,它没有在其他开发者的任何其他机器上工作。据我所见,我没有任何文件没有在源代码管理下签入。我已经使用了RouteDebugger,我看到了正确的路线被抓住了。
我用于此SPA的路线是/ V2 / Home。所以我有一个名为" V2"的区域,一个名为" HomeController"的区域中的MVC控制器。它有一个名为" Index"的视图。我在V2AreaRegistration中设置了一个catchall。
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"V2_default",
"V2/{*url}",
new { area = "V2", controller = "Home", action = "Index" }
);
}
这里是Global.asax.cs中的Application_Start
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterAuth();
AutoMapperConfiguration.Configure();
Logger.Info("Application started");
GlobalConfiguration.Configuration.EnsureInitialized();
}
我完全无处可去。我很乐意解决这个问题。随意询问任何遗漏。
答案 0 :(得分:2)
我不确定它究竟是什么,但我设法解决了我的问题。它与我们如何处理路由和身份验证/权限有关。
答案 1 :(得分:1)
我无法解释这在你的机器上是如何工作的,而不是你的同事机器。
看起来您的区域注册不知道控制器所在的命名空间。尝试在MapRoute
方法调用中添加第4个参数,以声明新控制器的命名空间:
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"V2_default",
"V2/{*url}",
new { area = "V2", controller = "Home", action = "Index" },
new string[] { "MyApplication.MyMvcProject.Areas.Controllers" } // Change this to the namespace of your area controllers.
);
}