1

잘 작동하는 웹 API 프로젝트가 있습니다. MVC 프로젝트와 병합했는데 이제는 URI 매개 변수가있는 작업 만 작동합니다. 다른 모든 작업은 컨트롤러가 발견되지 않는 404 Not Found로 끝납니다.웹 API 라우팅 - URI 매개 변수가있는 작업 만 수행

http://localhost:2000/api/WikiPlan/SearchWikiPlans/baby 
[AllowAnonymous] 
[HttpGet] 
[Route("SearchWikiPlans/{keyword}")] 
[ResponseType(typeof(List<WikiPlanSearchResultViewModel>))] 
public IHttpActionResult SearchWikiPlans(string keyword) 

여기 하나입니다 :

[Authorize] 
[RoutePrefix("api/WikiPlan")] 
public class WikiPlanController : ApiController 

여기에 작동하는 작업입니다 : 여기

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     // Web API configuration and services 
     // Configure Web API to use only bearer token authentication. 
     config.SuppressDefaultHostAuthentication(); 
     config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType)); 

     // Web API routes 
     config.MapHttpAttributeRoutes(); 

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

컨트롤러 클래스입니다 : 여기

내가 WebApiConfig에서 (표준 물건)가 무엇 그것은 작동하지 않습니다 (예전에는 프로젝트에서 사용 했었습니다) :

http://localhost:2000/api/WikiPlan/TopWikiPlans 
[AllowAnonymous] 
[HttpGet] 
[Route("TopWikiPlans")] 
[ResponseType(typeof(List<TopWikiPlan>))] 
public IHttpActionResult TopWikiPlans() 

무엇이 잘못 되었나요? 당신의 도움을 주셔서 감사합니다!

+0

클래스 선언을하시기 바랍니다. – Dalorzo

+0

요청한 URL은 무엇입니까? – Dalorzo

+0

예 컨트롤러 클래스 – Dalorzo

답변

4

이 Route Debugger 도구 (http://blogs.msdn.com/b/webdev/archive/2013/04/04/debugging-asp-net-web-api-with-route-debugger.aspx) 덕분에 고장난 URL을 추적하고 문제를 파악할 수있었습니다.

프레임 워크가 내 API 경로가 아닌 MVC 경로와 깨진 URL을 일치시키는 것으로 나타났습니다. 그래서 Global.asax에서 MVC 경로 위에 API 경로를 등록하도록 호출을 이동 시켰습니다. 이제는 올바르게 일치합니다.