我想执行什么看起来像一个简单的任务 - 从调用一个单独的程序在我的项目的控制器。ASP.Net MVC 4在单独的程序路由控制器返回错误404
但是,当我向控制器请求信息时,我得到了404错误。我一直在为它工作5-6个小时,我怀疑我可能错过了一些小而明显的东西,这就是为什么我希望建议。
我在stakoverflow上发现了关于路由和错误404的类似问题,但由于我实现了另一个原型项目,我没有得到这样的错误并使用类似的代码结构,我相信他们描述的问题与我的不同。
对于一般的画面 - 什么,我想实现像它描述here正在实施一个独立的项目内的区域的总体目标。 我所做的一切就像是在链接解释了一个小型原型(和它完美的作品),现在想申请真正的项目。
这是我包括装配和管理路由:
- 有一个与表示隐藏的子工程“CommunicationBus”的地区之一,主要项目
“CommunicationBus”项目包含一个类“CommunicationBusAreaRegistration”。注册一个路由可以正常工作,我可以使用调试器来到这里,而且当我使用routedebugger时(见下面的截图),我可以看到这个路由。我也玩过这个班级的名字空间,最后尝试添加
.Areas.CommunicationBus
,但是我没注意到任何区别。namespace MBVD.MainProject.UI { public class CommunicationBusAreaRegistration : AreaRegistration { public override string AreaName { get { return "CommunicationBus"; } } public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "CommunicationBus_default", "CommunicationBus/{controller}/{action}/{id}", new { action = "Index", id = UrlParameter.Optional }, new string[] { "CommunicationBus.Controllers" } ); } } }
在主项目的Global.asax我注册路由方式如下:
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional }, new[] { "MBVD.MainProject.UI.Controllers" } ); }
如果我在这里引用“CommunicationBus.Controllers”,我主要的不再能打开网页应用。但是,我相信,我只需要在这里路径注册到主申请CommunicationBus项目
输出路径设置为主要项目的bin文件夹的控制器。每次构建CommunicationBus时,我都会在主项目中获得新的.dll文件。
我添加了一个简单的控制器到CommunicationBus项目:
namespace CommunicationBus.Controllers { public class TestController : Controller { [HttpGet] public string Index() { return "It works!"; } } }
我添加了一个链接到主项目
@Html.ActionLink("test","Index","Test", new {Area="CommunicationBus"}, null)
它是:
本地主机:63254/CommunicationBus /测试
我用routedebugger,并没有表现出任何可疑:
我使用ASP.NET MVC 4这两个项目。
我很感激任何想法,我可以做什么来弄清楚为什么我得到这个错误。