반응형
일반적으로 Controller 는 동일한 Namespace로 지정하지만 예외적으로 분리를 했다고 하자!!
폴더 | 파일 |
Controllers | HomeController.cs |
AddControllers | HomeController.cs |
RouteConfg.cs
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
위와 같이 동일한 HomeController 를 만들고 Namespace 가 각각 "Test.Controllers", "Test.AddControllers" 인 경우 호출을 하면 아래와 같은 route 오류가 발생합니다.
'/' 응용 프로그램에 서버 오류가 있습니다.이름이 'Home'인 컨트롤러와 일치하는 유형이 여러 개 발견되었습니다. 이 요청('{controller}/{action}/{id}')을 처리하는 경로에 요청과 일치하는 컨트롤러를 검색하는 네임스페이스가 지정되지 않으면 이러한 문제가 발생할 수 있습니다. 이러한 경우 'namespaces' 매개 변수를 사용하는 'MapRoute' 메서드의 오버로드를 호출하여 이 경로를 등록하십시오.
설명: 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 스택 추적을 검토하여 발생한 오류 및 코드에서 오류가 발생한 위치에 대한 자세한 정보를 확인하십시오.예외 정보: System.InvalidOperationException: 이름이 'Home'인 컨트롤러와 일치하는 유형이 여러 개 발견되었습니다. 이 요청('{controller}/{action}/{id}')을 처리하는 경로에 요청과 일치하는 컨트롤러를 검색하는 네임스페이스가 지정되지 않으면 이러한 문제가 발생할 수 있습니다. 이러한 경우 'namespaces' 매개 변수를 사용하는 'MapRoute' 메서드의 오버로드를 호출하여 이 경로를 등록하십시오. 'Home'에 대한 요청에서 다음과 같은 일치하는 컨트롤러를 찾았습니다. WebApplication1.Controllers.HomeController WebApplication1.AddControllers.HomeController |
이는 메시지에 이미 잘 나왔지만 컨트롤러로 찾게 되는데 동일한 컨트롤러가 2개가 있어 발생합니다. 이 경우에는 route 를 지정할때 기본 우선순위를 지정하여 처리할 수 있습니다.
RouteConfig.cs
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new[] { "Test.AddControllers" }
);
}
** 맨 마지막에 new [] { "Namespace" } 부분만 수정되었습니다.
반응형
'IT > C#' 카테고리의 다른 글
MVC5 Html Helper (Core 아님) (0) | 2023.03.30 |
---|---|
ActionResult 종류 (0) | 2023.03.30 |
[MVC] ModelState.IsValid 가 false 인데 이유를 찾기 어려울때 (0) | 2023.03.27 |
Globalization (0) | 2023.03.24 |
Dapper with MySQL (0) | 2023.03.15 |