2011-11-17 4 views
1

C# .NET 프로젝트에서 WCF 4와 MVC 3 모두를 호스팅하려고합니다. 그러나 WCF에 대한 서비스 경로를 추가하면 Html.ActionLink가 MVC 앱에 대한 잘못된 URL을 만들기 시작합니다. 경로 테이블 위MVC 응용 프로그램에서 ASP.NET WCF 및 Routes.Add를 사용하여 ActionLink 동작 수행

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

RouteTable.Routes.Add(new ServiceRoute("api1/projects", new WebServiceHostFactory(), typeof(Projects))); 
routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
); 

는 WCF와 MVC 애플리케이션 모두에 적합한 액세스 경로를 생성하지만 Html.ActionLink

http://localhost:8000/api1/projects?action=Edit&controller=technology&id=2 

대신

http://localhost:8000/technology/Edit/2 
로 편집 링크를 만듭니다로 내 경로 테이블이 만들어집니다

RouteTable.Routes.Add으로 시작하는 줄을 생략하면 ActionLink은 예상대로 작동합니다 (물론 WCF가 아님). WCF 경로를 추가하고 actionlink 동작이 변경되지 않도록하려면 어떻게해야합니까?

+0

가능한 중복 질문 : http://stackoverflow.com/questions/3570887/mvc2-routing-with-wcf-serviceroute-html-actionlink-rendering-incorrect-links – nemesv

+0

예, 중복되었습니다. 위 질문은 http://stephenwalther.com/blog/archive/2008/08/07/asp-net-mvc-tip-30-create-custom-route-constraints.aspx에서 내 문제를 해결했습니다. –

+0

관련 항목보기 [About-using-WCF-RESTful-services] (http://zayko.net/post/About-using-WCF-RESTful-services-together-with-ASPNET-MVC-projects.aspx) 및 [MVC 웹 사이트 내에서의 WCF 서비스 실행 방법] (http://blog.zoolutions.se/post/2010/10/30/How-do-I-run- WCF-service-inside-an-MVC- 웹 사이트 -OR-Do-you-make-good-of-Linq.aspx) –

답변

1

뒤에 ServiceRoute 등록을 넣으십시오.

+0

내 WCF 요청이 첫 번째 MapRoute와 일치하고 404 http : // localhost : 8000/api1/projects의 경우 –

관련 문제