Tôi có một dịch vụ WCF sống song song với một trang web MVC2. Tôi muốn cho URL của tôi cho dịch vụ trông như thế này:Định tuyến MVC2 với Dịch vụ WCFĐịnh tuyến: Html.ActionLink hiển thị liên kết không chính xác!
http://localhost/projdir/Service
Các trang web MVC là trong giai đoạn phôi thai vì vậy nó vẫn có tất cả các bộ điều khiển soạn sẵn của nó vv
Các mã sau đây làm việc tại cái nhìn đầu tiên trong 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
);
}
Dịch vụ này chỉ xuất hiện ở nơi tôi đã mô tả và hoạt động như được quảng cáo. Tuyệt quá.
Tuy nhiên, tôi chỉ nhận thấy rằng việc đặt mã của tôi theo cách này sẽ thay đổi tất cả các số ActionLink
của tôi. Ví dụ, "Giới thiệu" tab trên trang web MVC bây giờ xuất hiện như thế này:
http://localhost/projdir/Service?action=About&controller=Home
Điều này rõ ràng là không chính xác (nó phải được http://localhost/projdir/Home/About/
).
Nếu tôi di chuyển thêm ServiceRoute
bên dưới cuộc gọi MapRoute()
mặc định, sau đó tôi gặp lỗi bộ điều khiển bị thiếu. (Trên thực tế tôi nhận được một "StructureMapControllerFactory đã không trả lại một thể hiện của một bộ điều khiển" lỗi, bởi vì tôi đang có dây với StructureMap, duh, nó không phải là một bộ điều khiển để bắt đầu với.)
Thật thú vị, nó chỉ có vẻ đang ảnh hưởng đến đầu ra của Html.ActionLink()
. Tôi có thể nhập theo cách thủ công http://localhost/projdir/Home/About/
và truy cập đúng trang.
Lỗi lầm mới lạ khủng khiếp mà tôi đang mắc phải?
Có thể liên quan? http://stackoverflow.com/questions/1470997/html-actionlink-construct-wrong-link-when-a-non-mvc-route-is-added – roufamatic