문제

i WebApi2 서비스를 작성하고 구현하려는 방법 중 하나는 내부 트리 구조 내의 객체에서 HTTP 가져 오기를 나타냅니다. 따라서 요청은 다음 줄을 함께합니다.

GET /values/path/path/to/object/in/tree
.

그래서 내 방법이 "PATH / to / object / in / tree"를받을 수 있습니다.

그러나 나는 이것을 실행할 때 404를 얻습니다. 표준 IIS 404를 찾고있는 404를 얻는 것은 흥미 롭습니다. '서버 오류'/ '응용 프로그램'이라는 메시지가 표시됩니다. 완전히 잘못된 리소스는 'HTTP ERROR 404.0 - 찾을 수 없음'이라는 제목입니다.

기본 템플릿을 사용하여 노력하고 내가 이것을 일할 수 있는지 확인하고, 따라서 유사성을 얻을 수 있습니다.

RouteConfig

에 대해이 기능이 있습니다.
public static void RegisterRoutes(RouteCollection routes)
{
    var route = routes.MapRoute(
               name: "CatchAllRoute",
                url: "values/path/{*pathValue}",
                defaults: new { controller = "Values", action = "GetPath" });
}
.

그리고 이것은 내 ValuesController입니다.

[System.Web.Mvc.AuthorizeAttribute]
[RoutePrefix("values")]
public class ValuesController : ApiController
{
    [Route("test/{value}")]
    [HttpGet]
    public string Test(string value)
    {
        return value;
    }

    [HttpGet]
    public string GetPath(string pathValue)
    {
        return pathValue;
    }
}
.

@



















나는 "Nofollow">의 방법론을 따르려고했습니다. 이 게시물 (http://www.tugberkugurlu.com/archive/asp-net-web-api-catch-all-route-parameter-binding) 그러나 일을 할 수 없었습니다. 나는 어리석게 쉽게 뭔가를 놓치지 만 몇 시간을 보냈지 만 내가 뭘 잘못하고 있는지 물어볼 것이라고 생각했다.

감사합니다

m

도움이 되었습니까?

해결책

Web API 라우팅은 MVC 라우팅과 동일하지 않습니다.

대신에
route.MapRoute
.

시도

public static void Register(HttpConfiguration config) {
    config.MapHttpAttributeRoutes

    config.Routes.MapHttpRoute(
        name: "CatchAll", routeTemplate: "values/path/{*pathvalue}", 
        defaults: new {id = RouteParameter.Optional });
}
.

컨트롤러에서 작동하는 이유는 MapRoute가 MVC 컨트롤러 라우팅을위한 올바른 형식이며 MaphtTProute는 API 컨트롤러 용으로 설계되었습니다.

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