Azure CosmosDB:文档 ID 中的非法字符

Azure CosmosDB: illegal characters in Document Id

我遇到的问题是,根据特定输入生成的 ID 包含字符“/”。这会导致 Upsert 操作期间出错,因为文档 ID 中不允许使用“/”。

旁边还有哪些字符不能使用? 有什么方法可以处理这种情况?

非法字符为/, \, ?, #(参见https://docs.microsoft.com/en-us/dotnet/api/microsoft.azure.documents.resource.id?view=azure-dotnet

处理这种情况的方法:

  • 删除用于生成 id 的输入中已有的字符
  • 将id中的字符替换为其他字符/字符集
  • 使用哈希/编码(例如 Base64)

如果您知道更好的方法,请分享。谢谢

我是base64编码的明文。然后分别用'-'和'_'替换base64仍然存在的'/'和'='。这似乎运作良好。当我刚尝试对值进行 UrlEncode 时,我 运行 遇到了其他问题。

伪装:

var encoded = String.ConvertToBase64(plainTextId);
var preppedId = encoded.Replace('/','-').Replace('=','_');