2011-09-21 2 views
12

최근에 ASP.NET MVC 3으로 업그레이드 한 프로젝트가 있습니다. 로컬 컴퓨터에서 모든 것이 제대로 작동합니다. 서버에 배포 할 때 RedirectToAction 호출을 사용할 때마다 오류가 발생합니다. 오류 메시지 이있는 System.InvalidOperationException을 반환합니다. 경로 테이블의 경로가 제공된 값과 일치하지 않습니다. 내 가정은 서버에 구성 문제가 있지만 그 사실을 파악할 수없는 것 같습니다.RedirectToAction 원인 "경로 테이블의 경로가 제공된 값과 일치하지 않습니다."ASP.NET MVC 3

+1

이것은 리디렉션 대상이 경로 테이블의 경로와 일치하지 않는다는 것을 의미하므로'global.asax' 파일에서 경로 테이블을 확인하십시오. 내 경로를 선언하지 않은 매개 변수를 추가하십시오. –

+0

실패한'RedirectToAction'에 대한 자세한 정보를 제공해주십시오. 또한 경로를 제공하십시오. – counsellorben

답변

3

나는 비슷한 문제가 RedirectToAction으로 한 번 발생했으며 그 행동으로 이끄는 유효한 경로가 등록되어 있어야한다는 사실을 알게되었습니다.

+4

그것은 길과 함께 무엇인가 밝혀졌다. 그것은 MVC2 잘 작동하지만 MVC3 함께 작동하도록 하나의 적은 선택적 매개 변수를 사용하여 추가 경로를 추가 할했습니다. – Schmalls

2

체크 아웃을 엿볼 당신이 어떤 경로 디버깅 정보를 얻을 수 있는지 확인 : MVC 3.0에서 작동하지 않는 경로에 슬래시를 후행 차이가있다 http://getglimpse.com/

0

. MVC 2.0에는 문제가 없습니다.

"{controller}.mvc/{action}/{id}/" 

에 : : 다음과 같은 변경하는 경우 즉,

"{controller}.mvc/{action}/{id}" 

이 (나를 위해 일한, this thread에서)이 문제를 해결해야한다. 업그레이드 마법사를 사용하여 MVC 3.0으로 이동하더라도 여전히 InvalidOperationException이 발생합니다. 나는 이것이 Schmalls이 말하고있는 것이 었는지는 알지 못한다.

18

영역을 가로 질러 리디렉션 할 때 MVC3 내의 영역에이 문제가 발생했습니다. 다른 사람들이 말했듯이, Glimpse는 매우 유용합니다.

것은 나를 위해이 솔루션은 값 경로 내의 지역에 전달했다 매개 변수의 변화 :

return RedirectToAction("ActionName", "ControllerName"); 

에 : 당신의 RouteConfig.cs이 같은 파일에

return RedirectToAction("ActionName", "ControllerName", new { area = "AreaName" }); 
+0

이 나는 ​​AttributeRouting를 사용하여이 문제에 실행하고,이 지역의 이름을 지정하지 않고 다른 페이지에서 작동하더라도, 나는이 특정 지역을 위해 그렇게했다 ... 진짜 대답이다. – jspinella

0

당신은 경로 테이블을 추가 할 수 있습니다 아래 :

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.MapMvcAttributeRoutes(); 

     var namespaces = new[] { typeof(HomeController).Namespace }; 

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

     routes.MapRoute("name", "url", new { controller = "controllerName", action = "actionName" }, namespaces); 
    } 

NB : "url"은 주소창에 입력하는 내용입니다. localhost :/home

경로를 설정 한 후 RedirectToRoute("url")을 사용하십시오.

또는 RedirectToAction()을 선호한다면 위의 경로를 설정할 필요가 없습니다. 기본값을 사용하십시오. RedirectToAction(string action name, string controller name);

이 정보가 도움이되기를 바랍니다.

관련 문제