C# 按已知键从Azure表存储中获取100项结果HTTP错误414

C# 按已知键从Azure表存储中获取100项结果HTTP错误414,c#,azure,azure-storage,azure-table-storage,C#,Azure,Azure Storage,Azure Table Storage,我想显示Azure表中的100个项目,我已经知道PartitionKey和Rowkey,因此对于$filter,如下所示: ((PartitionKey eq'js32')和(RowKey eq'18371378441826619420'))或((PartitionKey eq'js53')和(RowKey eq'18371389407961060290'))或((PartitionKey eq'js37')和(RowKey eq'18371565010300884950'))或((Partit

我想显示Azure表中的100个项目,我已经知道PartitionKey和Rowkey,因此对于$filter,如下所示:

((PartitionKey eq'js32')和(RowKey eq'18371378441826619420'))或((PartitionKey eq'js53')和(RowKey eq'18371389407961060290'))或((PartitionKey eq'js37')和(RowKey eq'18371565010300884950'))或((PartitionKey eq'js64')和(RowKey eq'1837157052522532718663'))或((PartitionKey eq'js78')和(RowKey eq'1837157102340779934'))或((PartitionKey eq'js18')和(RowKey eq'18371620015195251645'))或((PartitionKey eq'js59')和(RowKey eq'18371642621740783008'))或((PartitionKey eq'js27')和(RowKey eq'1837165321970284172'))或((PartitionKey eq'js79')和(RowKey eq'183716868422615342'))或((PartitionKey eq'js25')和(RowKey eq'18371703202567992223'))或((PartitionKey eq'js25')和(RowKey eq'1837172192119285995'))或((PartitionKey eq'js40')和(RowKey eq'18371723165056625088'))或((PartitionKey eq'js58')和(RowKey eq'1837174251515408322'))或((PartitionKey eq'js59')和(RowKey eq'183717426902777511383'))或((PartitionKey eq'js27')和(RowKey eq'183717543494151569'))或((PartitionKey eq'js41')和(RowKey eq'18371755036440371353')或((PartitionKey eq'js70')和(RowKey eq'18371790002968340255'))……

总共100个项目(因此100个分区键和100个行键)

但是我得到了错误:
HTTP错误414。请求URL太长。


您是否遇到此错误,您是如何解决的?

HTTP响应414不是特定于Windows Azure表存储的:它只是意味着您的请求URI太长。我从未遇到过这种情况,因为我通常不会生成以这种方式调用多个单独行的查询。我不确定最大URI长度是多少


话虽如此:这个查询看起来不是很有效,因为您正在跨越分区,这意味着您将使用延续标记返回部分结果(至少根据您提供的$filter片段我猜是这样)。有关延续令牌和响应的更多信息。

您是通过REST还是StorageClientLibrary来实现这一点的?该库确实为您提供了一些很好的摘要。

我同意David Makogon的观点-您最好编写多个查询。如果您这样做,还可以使用并行线程来加快速度。如果您这样做的话在分区键上路由、分组(每个线程/连接命中一个特定键/一组键)

就长Uri而言,IE将支持大约2k。我不知道这是否是IE特定的限制,或者该限制是否也适用于.NET WebClient。此外,请注意,即使它适用于非常长的查询字符串,也可能有代理不适用于该长度的Uri

另一个建议是转换为范围查询(大于和小于),并排除不需要的某些元素和其他查询片段。这仅在密钥结构使范围查询有意义时才有效

埃里克