2011-10-26 2 views
1

파일 저장소 역할을하는 RESTful WCF 서비스가 있습니다. 많은 수의 디렉토리와 하위 디렉토리가있을 수 있기 때문에 파일 경로를 URL에 넣기 만하면 사용자가 액세스 할 수있게하려고합니다. 사용자가 슬래시를 인코딩 할 필요없이이 작업을 수행 할 수있는 방법이 있습니까?인코딩없이 URI 템플릿에서 슬래시 ('/') 사용

예를 들어 http://localhost:8000/Files/folder1/subfolder2/subfolder3/file.jpg처럼 액세스 할 수있는 Files/{path}의 URI 템플릿을 원합니다.

+0

_ "에 의해 슬래시를 인코딩합니까?" 1) 인코딩해야하는 경우 사용자가 작성해야하는 항목, 2) 작성하고 싶은 내용, 3) 사용자 입력을 읽음으로써 얻고 자하는 결과 등을 예를 제공 할 수 있습니까? – Otiel

+0

서비스가 그렇지 않으면 슬래시를 매개 변수의 일부가 아닌 URI의 일부로 해석하기 때문에 슬래시 인코딩이 필요합니다. 이전 버전에서는 일치하는 URI 템플릿을 찾을 수 없기 때문에 404를 반환합니다. 인코딩을 사용하면 위의 예제 URL은 다음과 같이 나타납니다. http : // localhost : 8000/Files % 2Ffolder1 % 2Fsubfolder2 % 2Fsubfolder3 % 2Ffile.jpg' – rafale

답변

5

당신은 당신의 URI 템플릿의 끝에 *를 넣을 수 있습니다. 작업 내에서 파일 경로로 *와 일치하는 나머지 URI를 해석 할 수 있습니다.

+2

URI를'Files/{path}'에서'Files/{* path}'로 바꿨습니다. 이제는 정상적으로 작동합니다. 감사! – rafale

+0

+1 나를 위해 일했습니다. – Chris

0

이 작업을 수행하려면 URL 재 작성 기술을 사용해야합니다. .net 4를 사용하는 경우 Route 테이블을 사용하십시오.

0

나는 옳지 않은가 두렵습니다. 다음과 같이 작동합니까?

  • 는 사용자가 path 변수에 folder1/subfolder2/subfolder3/file.jpg 뭔가를 입력하자.
  • 는 수행 String encodedPath = path.Replace("/", "%2F");
+0

그럴 수는 있지만 생각은 사용자가 슬래시를 인코딩합니다. 이렇게하면 더 명확한 URL을 만들 수 있고 브라우저에 쉽게 액세스 할 수 있습니다 (예 : 브라우저의 주소 표시 줄을 통한 직접 연결). – rafale