2012-10-23 6 views
3

기존 웹 프로젝트를 MVC로 변환하려고합니다. VS 2012에서 표준 MVC 프로젝트를 만들었습니다. 라우팅 구성이 추가되었습니다. 기존 프로젝트에 이미 WCF 서비스에서 사용 된 라우팅 항목이 포함되어 있습니다. 이제 경로는 다음과 같이 구성됩니다.MVC 경로가 서비스 경로와 충돌합니다.

// Was here before, used by services 
routes.Add(new ServiceRoute("AppServer", new WebServiceHostFactory(), typeof(MyService))); 

// the rest is added by vs to configure a default controller 
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

더 제한적이기 때문에 항상 서비스 부분이 우선되어야한다는 것을 알았습니다. 서비스가 끝나면 작동하지 않습니다. 하지만 지금 문제는

@Html.ActionLink("text", "MyAction", "MyController") 

지금 나에게 유형의 링크

http://localhost/AppServer?action=MyAction&controller=My 

대신

http://localhost/My/MyAction 

의 나는 무엇을 기대를 생성하는 것입니다.

누구나 서비스 경로 및 mvc 관련 경로를 "평화롭게"즉 서로 영향을주지 않도록 만드는 방법을 알고 있습니까?

+1

MapRoute을 맨 위에 놓으십시오.하지만 다음과 같이 컨트 리뷰 션에 4 번째 매개 변수를 추가하십시오 : 'new {controller = "regex-for -! = - AppServer"}' – Tallmaris

+0

Tallmaris : 고마워,이 작품! 당신이 답을 써 주면 나는 그것을 표시 할 것입니다. – ElDog

+0

나는이 솔루션에서 WcfContraint를 사용하여 끝냈다. http://stackoverflow.com/questions/7225887/wcf-web-api-service-routes-conflicting-with-regular-asp-net-mvc-routes-web-api –

답변

2

시험 후 상단에있는지도 노선을 넣어하지만,이 같은 제약 조건에 대한 fourth parameter을 추가 링크를 만들 때

new { controller = "regex-for-!=-AppServer" } 

이 방법은, 도우미,하지만 여전히 들어오는 요청을 "발견 된 첫 번째 경로를 사용합니다/AppServer "는 ServiceRoute에 의해 건너 뛰고 처리됩니다.

관련 문제