我有一個與MVC2網站並排生活的WCF服務。我想爲我的URL的服務看起來像這樣:MVC2路由與WCF ServiceRoute:Html.ActionLink渲染不正確的鏈接!
http://localhost/projdir/Service
的MVC網站還處於起步階段,因此仍然有它的所有樣板控制器等
下面的代碼工作在乍一看global.asax:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.Add(new ServiceRoute("Service", new ServiceHostFactory(),
typeof(MyService)));
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index",
id = UrlParameter.Optional } // Parameter defaults
);
}
該服務出現在我所描述和工作作爲廣告。大。
但是,我只是注意到,這樣訂購我的代碼改變了我所有的ActionLink
的。例如,在MVC網站上的「關於」選項卡現在看來是這樣的:
http://localhost/projdir/Service?action=About&controller=Home
這顯然是不正確(應該是http://localhost/projdir/Home/About/
)。
如果我將ServiceRoute
添加到低於默認的MapRoute()
調用,那麼我得到一個丟失的控制器錯誤。 (實際上,我得到一個「StructureMapControllerFactory沒有返回控制器實例」的錯誤,因爲我使用了StructureMap,但它不是一個控制器。)
有趣的是,它似乎只是影響輸出Html.ActionLink()
。我可以手動輸入http://localhost/projdir/Home/About/
並進入正確的頁面。
我在做什麼非常明顯的新手錯誤?
可能有關? http://stackoverflow.com/questions/1470997/html-actionlink-construct-wrong-link-when-a-non-mvc-route-is-added – roufamatic 2010-08-26 00:01:07