2014-09-22 3 views
1

webapi 프로젝트를 작성하고 있는데 컨트롤러 'Ticket'에서 'TestMethod'와 일치하는 작업이 없습니다. 컨트롤러의 모든 메소드를 시도하십시오.'CloseTicket'과 일치하는 'Tickets'컨트롤러에서 아무런 작업도 찾을 수 없음

아래 컨트롤러의 작업이 작동하지 않습니다.

나는 인터넷 검색을 수행 중이며 이미 라우팅에 작업을 추가하기 위해 WebApiConfig.cs를 설정했습니다.

누락 된 것이 있습니까? 작업을 선택하는 동안

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { id = RouteParameter.Optional }); 

     config.EnableSystemDiagnosticsTracing(); 
    } 
} 

컨트롤러

public class TicketController : ApiController 
{ 
    [HttpPost] 
    public static ServiceResponse<string> IssueTicket([FromBody]ServiceRequest<TicketRequest> request) 
    {    
     return ServiceResponse<string>.WithPayload(ticketID); 
    } 

    [HttpPost] 
    public static ServiceResponse<bool> CheckTicketExist([FromBody]ServiceRequest<string> request) 
    {    
     return ServiceResponse<bool>.WithPayload(doesExist); 
    } 

    [HttpPost] 
    public static ServiceResponse<bool> CloseTicket([FromBody]ServiceRequest<string> request) 
    { 
     return ServiceResponse<bool>.WithPayload(result); 
    } 

    [HttpPost] 
    public static bool TestMethod([FromBody]string test) 
    { 
     return true; 
    } 
} 
+0

@ ValutBoy14이 오류가 발생하면 어떻게 될까요? – Gjohn

+0

속성 라우팅을 사용하면 사물을 분명하게 할 수 있습니다. 또한 HttpPost 특성에 대해 System.Web.Http 네임 스페이스를 사용해야합니다. – NMK

+0

"조치를 찾을 수 없습니다"라는 오류 메시지가 표시되는 데 사용하는 URL은 무엇입니까? 왜 당신은 당신의 모든 행동에'정적'을 가지고 있습니까? 양식 게시 URL은 yoursite.tld/api/ticket/IssueTicket이어야합니다. – joym8

답변

3

웹 API는 정적 메서드를 고려하지 않습니다.

Reference

컨트롤러의 방법은 "행동"으로 간주됩니다

? 조치를 선택할 때, 프레임 워크는 제어기의 공용 인스턴스 메소드만을 조사합니다.

컨트롤러에서 static 키워드를 제거하십시오.