특성 라우 이상한 행동을 ApiController
-
22-12-2019 - |
문제
사용 특성 라우팅을 지정한 나 노선에는 컨트롤러에서 상속되는 시스템입니다.웹.Http.ApiController.난 펑키는 동작입니다.여기에 몇 가지 예제 코드는 다음과 같습니다:
[RoutePrefix("api/1/user")]
public class UserRestController : ApiController
{
UserService userService = new UserService();
[Route("{id}"), HttpGet]
public UserDTO Get(string id)
{
var user = userService.GetUserById(id);
return user;
}
}
는 절대적으로 작동하는 방법을 내가 기대하는 것입니다.방문할 때~/api/1/user/someId 나보다.치는 포함되지 않은'1'의 경로에 접두사를 얻을"아니 HTTP 자원 발견되었다는 것과 일치하는 요청 URI'base 을/api/user/someId'."
가 mvc 노선,웹 api 경로 및 특성 경로에 모든 등록되는 응용 프로그램 시작에 이 프로젝트에서 그러나 내가 생각하는 기본 경로에 대한 이 컨트롤러는 것~/userrest/...그래서 나는 생각하지 않을 등록하는 사람들의 원인이 될 것입이지만 내가 잘못 될 수 있습니다.
의 샘플을 내가 무엇을 원하는:
[RoutePrefix("api/user")]
public class UserRestController : ApiController
{
UserService userService = new UserService();
[Route("{id}"), HttpGet]
public UserDTO Get(string id)
{
var user = userService.GetUserById(id);
return user;
}
}
제가 기대하는~/api/user/someId 작업 그러나 나는 오류를 언급된 위("No HTTP 자원 발견되었다는 것과 일치하는 요청 URI'base 을/api/user/someId'.").
전체 오류 xml:
<Error>
<Message>
No HTTP resource was found that matches the request URI
'baseUrl/api/user/someId';.
</Message>
<MessageDetail>
No type was found that matches the controller named 'user'.
</MessageDetail>
</Error>
해결책
기반의 오류에 대한 설명,당신은 등록 기존의 경로를 호출하기 전에 MapHttpAttributeRoutes.예를 들어,당신이 있는 것일 수 있습니다 같은 경로 config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}"...)
.이 경우 이와 같은 요청 api/user/someid
치 이 경로 및 웹 API 것을 찾는 컨트롤러의 입력 UserController
.전화를했는지 확인하십시오 MapHttpAttributeRoutes
하기 전에이다.
기본적인 규칙:더 많은 특정 노선을 등록해야 하기 전에 적-특정 또는 일반적인 경로입니다.