我想執行什麼看起來像一個簡單的任務 - 從調用一個單獨的程序在我的項目的控制器。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這兩個項目。
我很感激任何想法,我可以做什麼來弄清楚爲什麼我得到這個錯誤。