ASP.NET MVC/WebApi에서 경로는 Controller
의 이름에서 자동으로 결정됩니다. 따라서 동일한 이름을 가진 두 개의 Controller
이 있고 RouteAttribute
의 경로를 덮어 쓰지 않으면 동일한 경로를 공유합니다.
는이 문제를 해결할 수있는 두 가지 방법이 있습니다
사용 Areas
: 지역 여러 MVCs, (일반적으로 인증/권한 부여 규칙에 의해 분리 된) 특정 섹션 각각에 응용 프로그램을 분리하기위한 것입니다. 이과 같습니다
- 조회수
- 모델
- 관리
- 컨트롤러
오버라이드 route
컨트롤러는 (안된하지만, 확실하지 작동 할 경우)을 사용하는 것이 :
[Route("MyHome")]
public class HomeController : Controller
{
}
[Route("MySecondHome")]
public class HomeController : ApiController
{
}
또한 알 그 RouteAttribute
에 대한 작동하려면 먼저 활성화해야합니다. 자세한 내용은 here을 참조하십시오.
public static void Register(HttpConfiguration config)
{
// Attribute routing.
config.MapHttpAttributeRoutes();
// Convention-based routing.
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
그러나 상관없이 네임 스페이스 구조, 같은 이름을 가진 클래스를 사용하지 않는 시도해야. 그것은 정확하게 당신이 상대하고있는 것을 인식하는 것을 더 어렵게 만듭니다.
예, 동일한 항목은 (사람이) 서로 혼동하는 경향이 있습니다. – Amy
두 가지 (예 : 컨트롤러)가 같은 것으로 불려지지만 다른 네임 스페이스에있는 것이 @JohnL 인 ** 이점 **을 통해 이야기 할 수 있습니까? – mjwills
첫 직장에서 나는 다른 3 명의 에이미와 함께 일했다. PA 시스템을 통해 전화가 올 때마다 우리 모두 네 명이 프론트 데스크에 나타납니다. 결국 우리는 우리를 차별화하기 위해 서로에게 별명 (나는 스쿠터)을 주었다. 이런 일이 당신의 코드에서 일어나지 않게하십시오. 고유 한 이름을 부여하고 이름 공간을 사용하여 논리적으로 구성하십시오. – Amy