【发布时间】:2012-07-15 21:56:54
【问题描述】:
Azure TableStorage RowKeys 中是否存在受限字符模式?我无法通过多次搜索找到任何记录。但是,在某些性能测试中,我得到的行为暗示了这种情况。
RowKeys 包含随机字符时出现了一些奇怪的行为(测试驱动程序确实阻止了受限字符 (/ \ # ?) 以及阻止单引号出现在 RowKey 中)。结果是我有一个 RowKey 可以很好地插入表中,但无法查询(结果是 InvalidInput)。例如:
RowKey: 9}5O0J=5Z,4,D,{!IKPE,~M]%54+9G0ZQ&G34!G+
尝试通过此 RowKwy(相等)进行查询将导致错误(在我们的应用程序中,使用 Azure Storage Explorer 和 Cloud Storage Studio 2)。我查看了通过 Fiddler 发送的请求:
GET /foo()?$filter=RowKey%20eq%20'9%7D5O0J=5Z,4,D,%7B!IKPE,~M%5D%54+9G0ZQ&G34!G+' HTTP/1.1
RowKey 中的 %54 似乎没有在过滤器中转义。有趣的是,对于使用包含此 RowKey 的批处理 XML 中的 URI 对表存储的批处理请求,我得到了类似的行为。我也看到了带有嵌入双引号的 RowKeys 的类似行为,尽管我还没有隔离这种模式。
有人遇到过这种行为吗?我可以轻松地限制其他字符出现在 RowKeys 中,但我真的很想知道“规则”。
【问题讨论】: