繁体   English   中英

更新 CouchDB 文档,其中 hash 斜线在 C# 代码中的 doc id

[英]Update CouchDB document which hash slash in the doc id from C# code

我已经使用文档 ID 中带有斜杠 (/) 的文档创建了 CouchDB 数据库。 I'm trying to update the database from C# code, I've try several CouchDB libs and also using plain-old-HttpWebRequest class but I fail with all because .NET Uri class escape the string pass into it. 我需要像这样创建一个 Uri:

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

这将始终被 .NET Uri class 转义到

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

这导致 CouchDB 将文档内容视为 ID 为 firstpart 的文档的附件,而不是将文档视为 ID 为 firstpart/secondpart 的文档的内容。

有任何想法吗?

我想知道您是否可以对%2f部分本身进行编码,以便.Net 将其解码一次,然后将正确编码的版本发送到服务器?

%字符编码为%25 ,因此试试这个 URL:

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

如果这确实有效,也许您可以通过调用System.Web.HttpUtility.UrlEncode来改进代码。

更好的解决方案是检查 API 以禁用取消转义。 这对我来说就像一个 API 错误。 如果我告诉框架one/two%2fthree那么是什么赋予了它对我进行第二次猜测的权利? 但这就是 HTTP 的世界。 (我听说 Apache httpd 反向代理是一个噩梦。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM