반응형

일반적으로 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' 메서드의 오버로드를 호출하여 이 경로를 등록하십시오.

'Home'에 대한 요청에서 다음과 같은 일치하는 컨트롤러를 찾았습니다.
TestControllers.HomeController
Test.AddControllers.HomeController

설명: 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 스택 추적을 검토하여 발생한 오류 및 코드에서 오류가 발생한 위치에 대한 자세한 정보를 확인하십시오.

예외 정보: 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

+ Recent posts