CloudTable.Execute 在 API 中不起作用

Gre*_*aue 4 asp.net-mvc reference azure-storage asp.net-web-api

我刚刚将一个函数从 MVC 应用程序移到了 MVC API 应用程序,出于某种原因,除了CloudTable.Execute.

代码:

try
            {
                CloudStorageAccount storageAccount = new CloudStorageAccount(new Microsoft.WindowsAzure.Storage.Auth.StorageCredentials(
        "accountName",
        "key"), true);

                CloudTableClient cloudTableClient = storageAccount.CreateCloudTableClient();
                CloudTable table = cloudTableClient.GetTableReference("SkypeUsers");
                table.CreateIfNotExistsAsync();

                TableOperation retrieveOperation = TableOperation.Retrieve<WorkUser>("Skype", skypeid);
                TableResult retrievedResult = table.Execute(retrieveOperation); //Does not work

                retrievedSkypeId = ((WorkUser)retrievedResult.Result).RowKey;
            }
            catch (Exception ex)
            {

            }
Run Code Online (Sandbox Code Playgroud)

错误:

Error CS1061 'CloudTable' does not contain a definition for 'Execute' and no 
extension method 'Execute' accepting a first argument of type 'CloudTable' could 
be found (are you missing a using directive or an assembly reference?)
Run Code Online (Sandbox Code Playgroud)

对 Microsoft.WindowsAzure.Storage 的引用与我在应用程序中使用的版本相同。我试过清理和重建。不确定是什么问题。

编辑:

打印我唯一的执行选项: 在此处输入图片说明

mei*_*ars 5

我的目标是 .NET Core & 使用 assembly Microsoft.WindowsAzure.Storage, Version=9.2.0.0。在ExecuteQuery不存在于CloudTable这个版本。这也可能是你的情况。

用:

table.ExecuteQuerySegmentedAsync(query, null).Result;
Run Code Online (Sandbox Code Playgroud)

ExecuteQuery 同步仍可用于 .NET Framework 版本,但对于 NET Standard,请改用 ExecuteQuerySegmentedAsync。

  • 虽然这行代码可能会回答这个问题,但您仍然可以考虑添加一些解释性句子,因为这会增加您的答案对其他用户的价值。 (5认同)

Fei*_*Han 1

\n

错误 CS1061 \'CloudTable\' 不包含 \'Execute\' 的定义,并且找不到接受类型为 \'CloudTable\' 的第一个参数的扩展方法 \'Execute\' (您是否缺少 using 指令或装配参考?)

\n
\n\n

CloudTable.Execute Method (TableOperation,\xe2\x80\x82TableRequestOptions,\xe2\x80\x82OperationContext)接受TableOperation对象作为第一个参数,根据您提供的代码,我们可以发现您确实将 TableOperation 对象传递给Execute方法,它不应该返回错误。请尝试将最新版本的Microsoft Azure Storage Client Library for .NET安装到您的项目中(代码在我这边的 WindowsAzure.Storage v8.0.0 上运行良好)并测试是否会出现相同的问题。您还可以告诉我们您现在使用的WindowsAzure.Storage的版本,然后我们将使用该版本测试代码。

\n\n

此外,请尝试使用TableQuery生成查询并调用CloudTable.ExecuteQuery方法来检索实体。

\n\n
TableQuery<WorkUser> query = new TableQuery<WorkUser>().Where(\n    TableQuery.CombineFilters(\n        TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "Skype"),\n        TableOperators.And,\n        TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.Equal, skypeid)));\n\nretrievedSkypeId = table.ExecuteQuery(query).FirstOrDefault().RowKey;\n
Run Code Online (Sandbox Code Playgroud)\n

  • 我在 ASP.NET Core 2.0 上的 WindowsAzure.Storage 8.4.0 上遇到同样的问题 (2认同)