ASP.Net MVC 라우트 매핑 이해하기
ASP.Net의 MVC (모델-뷰-컨트롤러) 아키텍처의 세계를 탐색하는 것은 특히 처음 시작할 때 매우 힘들 수 있습니다. 개발자가 직면하는 일반적인 문제 중 하나는 라우팅, 즉 사용자 지정 라우트를 컨트롤러에 매핑하는 것입니다. 이 게시물에서는 자주 발생하는 문제인 *.aspx
파일을 PageController
에 매핑하는 방법에 대해 다룰 것입니다.
문제: *.aspx
를 PageController
에 매핑하기
MVC에 새로 온 경우 ASPX 확장자를 사용하여 페이지를 제공하고 싶다고 상상해 보십시오. 다음과 같은 라우트를 생성하려고 할 수 있습니다:
routes.MapRoute(
"Page",
"{name}.aspx",
new { controller = "Page", action = "Index", id = "" }
);
그러나 /Page.aspx
와 같은 URL을 입력하여 이 라우트를 테스트하면, 경로에 대한 컨트롤러를 찾을 수 없다는 오류 메시지에 직면할 수 있습니다:
경로 ‘/Page.aspx’의 컨트롤러를 찾을 수 없거나 IController 인터페이스를 구현하지 않았습니다. 매개변수 이름: controllerType
이 오류는 실망스럽고, 뭔가를 놓쳤는지 고민하게 만듭니다.
해결책: 라우트 매핑에서 순서가 중요하다
당신의 문제에 대한 해결책은 간단히 라우팅 순서였다는 사실에 안도할 수 있습니다. ASP.Net MVC는 등록된 순서대로 라우트를 처리합니다. 즉, 기본 라우트가 사용자 지정 라우트보다 먼저 선언되면 기본 라우트가 우선권을 갖게 됩니다.
문제를 해결하는 단계
-
사용자 지정 라우트 이동:
*.aspx
에 대한 사용자 지정 라우트 매핑이 기본 라우트보다 앞서서 정의되어 있는지 확인하십시오. 조정된 등록은 다음과 같이 보여야 합니다:routes.MapRoute( "Page", "{name}.aspx", new { controller = "Page", action = "Index", id = "" } ); routes.MapRoute( "Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional } );
라우팅 작동 방식: 설정보다 관례
라우팅 로직을 추가로 분명히 하기 위해, MVC는 설정보다 관례라는 원칙을 활용하고 있음을 알 수 있습니다. 이는 프레임워크가 명시적인 설정보다 관례에 따라 요청이 어디로 가야 하는지를 추론하려 한다는 것을 의미합니다.
추가 자료
ASP.Net MVC 라우팅에 대한 이해를 깊이 하고자 하는 분들을 위해, ASP.Net의 주요 제작자 중 한 명인 Scott Guthrie가 귀중한 통찰력을 공유했습니다:
두 리소스 모두 MVC와 라우팅의 미묘함을 탐색하는 데 도움이 되는 풍부한 정보를 제공합니다.
결론
결론적으로, ASP.Net MVC에서 *.aspx
페이지를 PageController
에 성공적으로 매핑하는 것은 단순히 올바른 코드를 작성하는 것 이상의 의미가 있습니다. 라우트 등록 순서와 프레임워크의 기본 원리를 이해하는 것이 필요합니다. 사용자 지정 라우트의 우선순위를 적절히 설정함으로써 라우팅 과정에서 발생하는 실망스러운 오류를 제거할 수 있습니다.
따라서 다음 번에 MVC 라우팅에 당황하게 되면, 순서가 중요하다는 것을 기억하고 여러분의 여정을 안내할 수 있는 잘 알려진 리소스를 찾아보십시오.