2011-08-13 3 views
1

문서 ID에 슬래시 (/)가있는 문서로 CouchDB 데이터베이스를 작성했습니다. C# 코드에서 데이터베이스를 업데이트하려고하는데 CouchDB 라이브러리 몇 개를 사용하고 일반 old-HttpWebRequest 클래스를 사용해 왔지만 .NET Uri 클래스가 문자열 전달을 이스케이프 처리하므로 모두 실패합니다. 는 그래서 같은 열린 우리당을 만들 필요가 : 항상C# 코드의 doc id에 해쉬 슬래시가있는 CouchDB 문서

http://myserver.com/db/firstpart/secondpart 

이 원인 CouchDB를에 .NET 열린 우리당 클래스로 이스케이프됩니다

http://myserver.com/db/firstpart%2Fsecondpart 

이 ID의 firstpart와 문서의 첨부 파일로 문서 내용을 치료하기 위해 ID가 firstpart/secondpart 인 문서의 내용으로 문서를 처리하는 대신

아이디어가 있으십니까?

+0

내 문서 ID에도 슬래시 문자를 사용하고 싶다. 모두는 그것이 의미하는 바를 알고 있으며, 이것은 매우 의미있는 성격입니다. 그러나 문제가 계속되면 '_' 또는'.'와 같이 다른 문자로 전환하여 문제를 완전히 피할 수 있습니다. – JasonSmith

답변

0

. %2f 부분을 인코딩 할 수 있는지 궁금합니다. 닷넷이이를 한 번 해독 한 다음 올바르게 인코딩 된 버전을 서버에 보내려면 어떻게해야합니까? 그 작업을 수행하는 경우, 어쩌면 당신이 System.Web.HttpUtility.UrlEncode를 호출하여 코드를 향상시킬 수

http://myserver.com/db/firstpart%252Fsecondpart 

:

% 문자 그러므로이 URL을 시도, %25로 인코딩합니다.

더 나은 해결책은 API에서 유실 해제를 사용 중지하는 것입니다. 그게 내 API 버그 같아. 내가 프레임 워크 one/two%2fthree을 말해 준다면 나에게 추측 할 권리가 무엇이겠습니까? 하지만 이것이 바로 HTTP의 세계입니다. (나는 아파치 httpd 리버스 프록시가 이것에 대한 악몽이라고 들었다.)

+0

나는 그것을 시도 할 것이다, 문제는 Uri 클래스 디코딩이 ctor로 전달되고 Microsoft가 전달 된 문자열을 디코딩하지 않도록 신호를 보내는 매개 변수를 사용하는 ctor를 제거한다는 것이다. 감사합니다 –

+0

좋습니다. 다른 사람들이 이것이 ** 작동하지 않을 것임을 알 수 있도록 아래쪽 투표를 해주시겠습니까? (나는 명성에 영향을주지 않으며 내 자존심에도 영향을 미치지 않는다 :) – JasonSmith