2009-09-03 3 views
1

REST Start Kit 미리보기 2로 간단한 REST Collection WCF 서비스를 작성했습니다. 템플릿 프로젝트는 사전 컬렉션 인스턴스가 내부 컬렉션 항목으로 포함 된 Service 클래스를 제공합니다. 각 항목에는 키와 값이 있습니다.REST 서비스 : 특수 문자열 매개 변수가있는 URL 요청 받기

키에 '.'이 포함되어 있으면 문제가 발생합니다. 'ProductA.Item1'과 같이 특정 항목에 대한 내 쿼리가 작동하지 않습니다. 이 항목에 대한 URL GET 요청은 같은 것입니다 :

http://localhost:1247/Service.svc/ProductA.Item1 

그 IIS 내 REST 서비스의 OnGetItem (문자열 ID) 메서드에 매개 변수로 xxx.xxx 전달하는 대신 자원으로 URL을 처리하는 것 같습니다. 'ProductAItem1'과 같은 점없는 키가있는 내부 컬렉션을 만드는 '.Item1'부분을 제거하면 정상적으로 작동합니다.

이 난 제품 ({ID})에 WebGet이 나를 변화하는 속성의 UriTemplate을 시도하고이 사용자 정의 URL을 시도 :

http://localhost:1247/Service.svc/Products(ProductA.Item1) 
    http://localhost:1247/Service.svc/Products('ProductA.Item1') 

아직도 내 코드 OnGetItem (문자열 ID) 메소드에 도달 할 수 없다. 점과 같은 키가 없으면 사용자 정의 된 URL도 올바르게 작동합니다.

그 점이나 '.'이 확실하지 않습니다. in URL은 IIS 서버에 의해 특수 문자인지 아닌지를 나타냅니다. 특수 문자 인 경우 어떻게 그 문자를 이스케이프 처리하거나 점 내부에 문자열 매개 변수로 만들 수 있습니까? 아니면 내 URL에 점을 전혀 사용할 수 없습니까?

답변

0

나는 System.Web.Routing의 클래스가 작동하는 방식으로 인해 문제가 발생한다고 생각합니다. 분명히 이것은 ASP.NET MVC 친구들 (see blog post)의 문제 였지만 Phil Haack의 게시물에 따르면이 문제는 수정 된 것으로 추정됩니다. REST 스타터 키트가 새로운 라우팅 dll을 아직 사용하지 않았을 수 있습니까?

+0

매우 가능합니다. 라우팅 서비스가 OnGetItem()에 대한 호출을 차단할 수 있습니다. ASP.Net 포럼에서 다시 확인하겠습니다. 감사! –

관련 문제