2012-11-21 2 views
4

이 DTO는경로가 변수로 시작될 수 있습니까?

[Route("/{Module}/{Name}")] 
public class ViewEntityList { 
    public string Module { get; set; } 
    public string Name { get; set; } 
} 

RestPath로 시작시 오류 내 응용 프로그램을 일으키는 '/ {모듈}/{이름}'형식의 'ViewEntityList은'유효하지 않습니다

리터럴 (예 : /Entity/{Module}/{Name})으로 시작하는 경로를 변경할 수는 있지만 원하는 것은 아닙니다. 게다가 내 URL이 지나치게 길어지고 REST와 유사하게 보이기 시작합니다.

경로를 변수로 시작할 수 있습니까? 그렇지 않은 경우 두 부분으로 된 경로를 특정 DTO에 매핑하는 다른 방법이 있습니까?

+0

프로젝트의 RouteAttribute? 내가 말한 것과 같은 일을하기 위해 RouteAttribute 클래스를 가진 여러 프로젝트를 찾았습니다.하지만 제가 알고있는 MVC에 내장 된 것은 없습니다. Tim McCall의 속성 라우팅이 있습니다. Stack Exchange가 사용하는 것이 있습니다. 그리고 다른 사람들도 있습니다. – Pete

+0

@ Pete : ServiceStack에만 해당됩니다. – Daniel

답변

0

난 항상 다음을 수행하십시오

 //Configure User Defined REST Paths 
     Routes 
      .Add<DTO1>("/service/function/{argument}") 
      .Add<DTO2>("/service/commonsegment/{Function*}") 

DT1에 대한 매핑이 "기본"매핑, 하나 개의 URL은 DTO에 해당합니다.

DTO2에는 "Function"이라는 키가 필요합니다.이 키는 URL의 첫 번째 "공통적 인"세그먼트의 이름을 제공하며 URL에 미리 설정된 다른 세그먼트는 가능한 경우 DTO2에 매핑됩니다 거기에 일치하는 속성이있는 경우). 이 방법을 사용하면 웹 서버 자체를 변경하지 않고 새로운 함수/인수에 공개 할 수 있으며 백업 구현 만 (외부 DLL에있을 수 있음) 가능합니다.

이 정보가 도움이되기를 바랍니다.

+0

답장을 보내 주셔서 감사합니다.하지만이 질문에 대한 답변이 나와 있지 않습니다. – Daniel

관련 문제