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('=','_');
我遇到的问题是,根据特定输入生成的 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('=','_');
var encoded = String.ConvertToBase64(plainTextId);
var preppedId = encoded.Replace('/','-').Replace('=','_');