1

다음과 같은 메소드가 UserController에 있습니다. 처음 두 개의 RegisterVerifyUser이 정상적으로 작동합니다.Route 속성을 사용하는 잘못된 끝점 실행

그러나 로그인 요청을받을 수 없습니다. URL의 조합이 무엇이든간에 - Register 메소드가 실행됩니다.

[RoutePrefix("api/user")] 
public class UserController : ApiController 
{ 
    [Route("Register")] 
    [HttpPost] 
    public HttpResponseMessage Register([FromBody]RegisterUserModel model) 
    { 
     .... 
    } 

    [HttpGet] 
    [Route("{email}/{verifyId}")] 
    public HttpResponseMessage VerifyUser(string email, string verifyId) 
    { 
     .... 
    } 

    [Route("Login")] //Not being fired - Register being fired 
    [HttpPost] 
    public HttpResponseMessage Login([FromBody]RegisterUserModel userMod) 
    { 
     .... 
    } 
} 

나는 분명한 뭔가를 놓치고 있습니까? 무슨 일이 일어나고 무엇

+0

그냥 추측하지만, 어쩌면 VerifyUser에 빠진다? –

+0

'Login'을 원할 때'Register' 라우트가 호출되고 있습니다. – TomSelleck

+0

@Tomcelic URL은 무엇입니까? 또한 'WebApiConfig', 즉 config.MapHttpAttributeRoutes()에서 속성 라우팅이 활성화되어 있는지 확인하십시오. – Nkosi

답변

1

은 대부분 기본 규칙을 기반으로 경로를 가지고있는 경우에만

먼저 등록지도 및 Login을 확인 귀찮게하지 않을
// Convention-based routing. 
config.Routes.MapHttpRoute(
    name: "DefaultApi", 
    routeTemplate: "api/{controller}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 

.

api/user/Login을 호출하면 자리 표시 자에 매핑되는 Login이있는 api/{controller}/{id} 대회 경로로 매핑됩니다. 라우트 테이블은 HTTP verb POST를 사용하여 제공된 본문을 사용하여 게시물을 처리 할 수있는 첫 번째 작업을 찾습니다. 먼저 레지스터를 찾아 해당 동작에 매핑합니다. 확인 속성 라우팅을 할

확인이 즉

// Attribute routing. 
config.MapHttpAttributeRoutes(); 

// Convention-based routing. 
config.Routes.MapHttpRoute(
    name: "DefaultApi", 
    routeTemplate: "api/{controller}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 

다음의 주석 WebApiConfig에서 활성화되어있는 작업에 매핑되는 URL을 보여줍니다. 올바른 경로를 찾을하려고 할 때

[RoutePrefix("api/user")] 
public class UserController : ApiController { 

    //Matches POST api/user/register 
    [Route("Register")] 
    [HttpPost] 
    public IHttpActionResult Register([FromBody]RegisterUserModel model) { 
     //.... 
    } 

    //Matches GET api/user/some_email/some_id 
    [HttpGet] 
    [Route("{email}/{verifyId}")] 
    public IHttpActionResult VerifyUser(string email, string verifyId) { 
     //.... 
    } 

    //Matches POST api/user/login 
    [Route("Login")] 
    [HttpPost] 
    public IHttpActionResult Login([FromBody]RegisterUserModel userMod) { 
     //.... 
    } 
} 

참조 Attribute Routing in ASP.NET Web API 2