문제

사용 특성 라우팅을 지정한 나 노선에는 컨트롤러에서 상속되는 시스템입니다.웹.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 하기 전에이다.

기본적인 규칙:더 많은 특정 노선을 등록해야 하기 전에 적-특정 또는 일반적인 경로입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top