Обновите документ CouchDB, косая черта которого в идентификаторе документа из кода C # - PullRequest
1 голос
/ 13 августа 2011

Я создал базу данных CouchDB с документами, которые имеют косую черту (/) в идентификаторе документа. Я пытаюсь обновить базу данных из кода C #, я пробовал несколько библиотек CouchDB, а также использую класс old-old-HttpWebRequest, но у меня ничего не получается, потому что класс .NET Uri экранирует передаваемую в него строку. Мне нужно создать Uri так:

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

, который всегда будет переведен классом .NET Uri в

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

Это приводит к тому, что CouchDB обрабатывает содержимое документа как вложение документа с идентификатором firstpart, а не как документ как содержимое документа с идентификатором firstpart / secondpart.

Есть идеи?

1 Ответ

0 голосов
/ 15 августа 2011

Интересно, можете ли вы закодировать саму часть %2f, чтобы .Net ее декодировал один раз, а затем отправил на сервер версию с правильной кодировкой?

Символ % кодируется как %25, поэтому попробуйте этот URL:

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

Если это сработает, возможно, вы могли бы улучшить код, вызвав System.Web.HttpUtility.UrlEncode .

Лучшим решением было бы проверить API на отключение экранирования. Для меня это похоже на ошибку API. Если я скажу фреймворку one/two%2fthree, тогда что дает ему право угадывать меня? Но это мир HTTP. (Я слышал, что обратные прокси-серверы Apache httpd - это кошмар).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...