Azure 表存储 - 501 未实现
Posted
技术标签:
【中文标题】Azure 表存储 - 501 未实现【英文标题】:Azure Table Storage - 501 Not Implemented 【发布时间】:2021-08-15 12:51:55 【问题描述】:我正在按照本指南使用 Azure Tables:https://docs.microsoft.com/en-us/dotnet/api/overview/azure/data.tables-readme-pre,它使用 Azure.Data.Tables NuGet 包。
我可以成功保存一行并在 Azure 门户的存储资源管理器中看到它,但是在尝试执行简单查询时,我又回来了:
Unhandled exception. Azure.RequestFailedException: Service request failed.
Status: 501 (Not Implemented)
Content:
"odata.error":"code":"NotImplemented","message":"lang":"en-US","value":"The requested operation is not implemented on the specified resource.\nRequestId:0137da3a-f002-0031-19
d6-5234ab000000\nTime:2021-05-27T08:59:39.8919922Z"
我的查询代码是:
var entities = _tableClient
.Query<TableEntity>(t => t.PartitionKey == PartitionKey)
.ToList();
【问题讨论】:
你能不试试 .ToList(); ? 同样的事情,但是当我迭代时发生错误 TableQueryvar query = table.CreateQuery<TableEntity>().Where(x => x.PartitionKey == "test").ToList();
对Microsoft.Azure.Cosmos.Table
包执行相同操作似乎对我来说没有问题。还没试过 beta 包。
【参考方案1】:
我也遇到了这个确切的问题,虽然它似乎没有在任何地方记录,但以下内容对我有用:
var token = new DefaultAzureCredential();
var tableServiceClient = new TableServiceClient(new Uri($"https://storageAccountName.table.core.windows.net/"), token);
var client = tableServiceClient.GetTableClient(tableName);
var entities = client.Query<MyEntity>(filter: $"PartitionKey eq 'partKey'");
我不太明白为什么直接创建TableClient:
new TableClient(new Uri($"https://storageAccountName.table.core.windows.net/tableName"), tableName, token);
不起作用,但首先通过 TableServiceClient 对我有用。试试看吧。
【讨论】:
【参考方案2】:当我像这样创建客户端时,我在 java SDK 中遇到了这个问题:
new TableClientBuilder()
.endpoint("https://storageAccountName.table.core.windows.net/tableName")
.sasToken(sas)
.tableName(tableName)
.buildClient()
所以我做错了将表名作为端点的一部分并删除它停止了异常。
【讨论】:
以上是关于Azure 表存储 - 501 未实现的主要内容,如果未能解决你的问题,请参考以下文章
将 Azure 表存储的重试策略与 Azure Functions 结合使用