39

사용자 지정 API를 설정하기 위해 웹 API 2 특성 라우팅을 사용하려고합니다. 내 경로가 내 함수가 호출되면, 작동하지만 모든 이유로 올바르게 작동하려면 첫 번째 매개 변수를 전달해야하는 이유가 있습니다. 다음은 내가 지원하고자하는 URL이 있습니다 : 마지막 3 개 URL이 작동ASP.NET 웹 API에서 선택적 매개 변수를 사용하여 특성 라우팅

http://mysite/api/servicename/parameter1 
http://mysite/api/servicename/parameter1?parameter2=value2 
http://mysite/api/servicename/parameter1?parameter2=value2&parameter3=value3 
http://mysite/api/servicename/parameter1?parameter2=value2&parameter3=value3&p4=v4 

을하지만, 첫 번째는 말한다 "조치가 요청과 일치하는 컨트롤러의 컨트롤러 이름 '에서 찾을 수 없습니다."

내 컨트롤러는 다음과 같습니다

public class MyServiceController : ApiController 
{ 
    [Route("api/servicename/{parameter1}")] 
    [HttpGet] 
    public async Task<ReturnType> Get(string parameter1, DateTime? parameter2, string parameter3 = "", string p4 = "") 
    { 
     // process 
    } 
} 

답변

65

웹 API를 명시 적으로 ... 심지어 nullable 형식에 대한 옵션 값을 설정해야합니다 그래서 당신은 다음과 같은 설정을 시도 할 수 있습니다 당신이 당신의 첫번째 요청이 성공 볼 수

DateTime? parameter2 = null 
+0

아, 물론 그것은 분명했습니다. 감사! – sohum

+9

RouteAttribute가 선택적 매개 변수를 지원하는 것으로 끝났습니다 (또는 경로가 단순히 원래 게시물과 유사 할 경우 요청 URL은 어떤 모양입니까?). – Colin

관련 문제