2017-09-26 4 views
3

프로젝트를 asp net 코어로 마이그레이션하고 있지만이 경로를 구성 할 수 없습니다. 특성을 사용하여 동작을 매핑하고 있습니다. Startup.csapp.UseMvc을 설정 파일에 ASP.Net 코어ASP.NET 코어 특성 라우팅

위한

코드 ASP.Net위한 WebAPI2

[Route("api/[controller]")] 
public class SalesController : Controller 
{ 
    // api/sales/1 -> ok 
    [HttpGet] 
    public HttpResponseMessage Get(int id) 
    { 
     // Logic 
    } 

    // api/sales -> ok 
    [HttpGet] 
    public HttpResponseMessage Get([FromUri] PaginationHelper pagination) 
    { 
     // Logic 
    } 

    // api/sales?me -> ok 
    [ActionName("Get")] 
    public HttpResponseMessage GetMe(bool? me) 
    { 
     // Logic 
    } 
} 

코드();

[Route("api/[controller]")] 
public class SalesController : Controller 
{ 
    // api/sales/1 -> ok 
    [HttpGet("{id}")] 
    public IActionResult Get(int id) 
    { 
     // Logic 
    } 

    // api/sales -> don't work 
    [HttpGet] // -> ??? 
    public IActionResult Get(PaginationHelper pagination) 
    { 
     // Logic 
    } 

    // api/sales?me -> don't work 
    [HttpGet] // -> ??? 
    public IActionResult GetMe(bool? me) 
    { 
     // Logic 
    } 
} 
+0

잘 모르겠어요 ..하지만 아마도 기존에 선행 할 필요가 당신은 하나의 경로를 추가 할 수 있습니다, 또는 당신이 그에게 경로 속성을 추가 할 수 있다고 생각합니다 메소드를 호출합니다. 경로 규칙은 선언 할 때 중요합니다. 다른 catch가 먼저 도착하면 ... – rmjoia

+1

이 방법이 효과가 있습니까? // Get api/values ​​ [HttpGet] 공용 IActionResult Get() { return 새 문자열 [] { "value1", "value3"}); } –

답변

1

새로운 프레임 워크는 엔드 포인트의 의도를보다 명시 적으로 표시를 기대하고있다.

[Route("api/[controller]")] 
public class SalesController : Controller { 

    [HttpGet("{id:int}")] // GET api/sales/1 
    public IActionResult Get(int id) { 
     // Logic 
    } 

    [HttpGet] // GET api/sales?page=1 assuming PaginationHelper has page property 
    public IActionResult Get([FromQuery]PaginationHelper pagination) { 
     // Logic 
    } 

    [HttpGet] // GET api/sales?me=true 
    public IActionResult GetMe(bool? me = false) { 
     // Logic 
    } 
} 

참조 Asp.Net Core: Model Binding

+0

매개 변수 [me]는 필터가됩니다. 기본적으로 false이지만 sales? me = true를 입력 할 수 있습니다.이 경우이 속성은이 문제를 해결하지 못합니다. –

+0

@WillianTeleginski 예, 업데이트를 확인하십시오. – Nkosi

+0

작동하지 않음, 오류 메시지 : 요청을 처리하는 동안 처리되지 않은 예외가 발생했습니다. AmbiguousActionException : 여러 동작이 일치했습니다. 다음 작업은 경로 데이터를 일치하는 모든 제약 조건이 만족했다 : 방법 대중과 충돌이 가져 IActionResult ([FromQuery] PaginationHelper 페이지) 및 공공 IActionResult GetMe (저를 bool로) –