2015-01-13 3 views
2

저는 ASP.net, Katana 등을 처음 사용하지만 빠른 학습이 가능합니다. 가장 좋은 방법 중 하나는 컨트롤러 용 버전을 사용하는 것입니다. 예를 들어Katana OWIN 버전 관리

http://localhot.com:7301/api/v1/ 제어기 {}/{} 연결 http://localhot.com:7301/api/v2/ 제어기 {}/{} 연결

startup.cs :

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

ConnectionController.cs (이 작동)

[RoutePrefix("v1/Connection")] 
public class ConnectionController : ApiController 
{ 
    public List<RadioComConnConfig> Get() 
    { 
     var state = ServerState.Create(); 
     var conList = new List<RadioComConnConfig>(); 
     foreach(var act in state.ActiveRadios) 
     { 
      conList.Add(act.CommPort); 
     } 
     return conList; 
    } 

0,123,191하지 않습니다

무엇이 누락 되었습니까?

답변

2

당신은 이전 스타일의 설정 라우팅을 제거 할 수 있습니다

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

을 만 attribute ruoting (당신이하고있는대로)를 사용합니다.

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

이를 사용 :

// Web API routes 
config.MapHttpAttributeRoutes(); 

컨트롤러의 상단에 귀하의 경로 접두어는 다음과 같이해야한다 :

[RoutePrefix("api/v1")] 

또는

당신의 WebApiConfig 의견이에서

,

과 액션의 경로를 정의합니다

[Route("Connection")] 
public List<RadioComConnConfig> Get() 
{ 
} 
+0

큰했다. 유일한 문제는 메서드에 대한 args로 문제가 있었지만 신속하게 알아 냈습니다. 고맙습니다! –