asp.net-mvc – ASP.Net MVC 4.在单独的程序集中路由控制器返回
我正在尝试执行看似简单的任务 – 从我的项目中的单独程序集调用控制器.
然而,当我从该控制器请求信息时,我得到错误404.我一直在与它斗争最后5-6小时,我怀疑我可能会遗漏一些小而明显的东西,这就是为什么我希望得到一个建议. 我在stakoverflow上找到了关于路由和错误404的类似问题,但是当我实现另一个原型项目时,我没有得到这样的错误并使用类似的代码结构,我相信他们描述的问题与我的不同. 总的来说 – 我想要实现的目标的总体目标是在独立项目中实现一个区域,如here所述. 这是我包含程序集和管理路由的方式: >有一个主要项目,其中一个区域代表一个隐藏的子项目“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",new[] { "MBVD.MainProject.UI.Controllers" } ); } 如果我在这里引用“CommunicationBus.Controllers”,我就不能再打开主应用程序的页面了.但是,我相信我只需要在这里注册主应用程序的控制器的路径 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 /测试 我将ASP.NET MVC 4用于这两个项目. 我会很感激我能做些什么来弄清楚为什么我会收到这个错误. 解决方法
我相信您因为路由顺序而收到此错误.由于/ CommunicationBus / Test与/ {controller} / {action} / {id}和/ CommunicationBus / {controller} / {action} / {id}匹配第一个注册路由(/ {controller} / {action} / {id })优先于所需的路由,MVC无法在名为CommunicationBus的默认命名空间(MBVD.MainProject.UI.Controllers)中找到控制器.
尝试在默认路由之前注册您的区域路由.或者,您可以一起跳过该业务并使用属性路由(http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx).如果使用属性路由,则需要确保在调用routes之前从所有命名空间加载控制器.MapMvcAttributeRoutes(); (如果您只是作为参考包含,这没有问题,如果您动态加载引用,它只会成为一个问题). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 如何使用TLS电子邮件与web.config
- ASP.NET身份
- ASP.NET C#,需要按两次按钮才能发生一些事情
- asp.net – 我应该在Web应用程序中嵌入CSS / JavaScript文件
- asp.net-mvc-2 – 为什么我们在ASP.NET MVC中使用HTML助手?
- asp.net-mvc-3 – 使用ASP.net MVC 3.0进行RDLC报告
- asp.net-mvc-4 – MVC 4.0 WebApi应用程序和混合身份验证
- MVC3 .NET会话随机丢失会话值并返回null
- 只有内容控件才能直接在包含ASP.NET内容控件的内容页面中
- 项目中出现多个域名下的Cookie