【问题标题】:Azure Table Storage - 501 Not ImplementedAzure 表存储 - 501 未实现
【发布时间】: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(); ?
  • 同样的事情,但是当我迭代时发生错误
  • TableQuery query = new TableQuery().Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, partitionKey));这个?
  • 这些类型来自什么库/包?
  • 也许 SDK 还没有完全发挥作用,因为据说它仍处于测试阶段。使用var query = table.CreateQuery&lt;TableEntity&gt;().Where(x =&gt; x.PartitionKey == "test").ToList();Microsoft.Azure.Cosmos.Table 包执行相同操作似乎对我来说没有问题。还没试过 beta 包。

标签: azure azure-storage azure-table-storage azure-tablequery


【解决方案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()
    

    所以我做错了将表名作为端点的一部分并删除它停止了异常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-07
      • 2014-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多