在Azure Table存储分区键中使用冒号会产生奇怪的结果

问题描述:

我遇到了一个真正令人困惑的情况,我希望能得到一些帮助。此代码:在Azure Table存储分区键中使用冒号会产生奇怪的结果

TableOperation retrieveOperation = TableOperation.Retrieve<T>(partitionKey, rowKey); 
TableResult result = await table.ExecuteAsync(retrieveOperation); 
T obj = result.Result as T; 

问题是与分区键,这是在表格上“发表:UID”,例如:Post:f45ff69958e14342970a6ea88e7a009f插入和检索数据是好的,但是让我疯狂的是,当我在检索到对象之后检查对象时,PartitionKey的“Post:”部分已从对象数据中剥离。创建对象中的分区键只是f45ff69958e14342970a6ea88e7a009f。这意味着如果我对该对象进行了更改并尝试执行一个操作,它将会在冒号后面创建一条新记录。我不能为了我的生活理解这会如何发生。

我曾尝试谷歌非法字符在分区键,但无法找到任何关于冒号是非法字符,所以很抱歉,如果这是一个常见问题。

任何帮助,将不胜感激。

+0

也许你应该只编码PartitionKey? PartitionKey和RowKey的确有一些非法字符,但我还没有听说过之前冒号列表。对不起,我不能更有帮助。 –

冒号不是分区键的非法字符。有关受限字符的更多信息,请参见this页面上的“在字段中禁用的字符”部分。

基于上面的代码片段,我创建了一个生成相同长度和相同“Post:”前缀的GUID的循环,但没有重现该问题。如果问题仍然存在,请发布重现问题所需的整段代码。