2017-01-03 10 views
2

Я только что переместил функцию из приложения MVC в приложение MVC API, и по какой-то причине все это работает, кроме CloudTable.Execute.CloudTable.Execute не работает в API

Код:

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) 
      { 

      } 

Ошибка:

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?) 

Ссылка на Microsoft.WindowsAzure.Storage той же версии я использую в моем приложении. Ive пытался очистить и перестроить. Не знаю, в чем проблема.

EDIT:

Печать моих только Execute-опций: enter image description here

ответ

1

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?)

CloudTable.Execute Method (TableOperation, TableRequestOptions, OperationContext) принимает TableOperation объект в качестве первого аргумента, и в соответствии с кодом, которую Вы предоставляете, мы могли бы найти вы действительно передаете объект TableOperation в Выполняете метод, он не должен возвращать ошибку. Попробуйте установить в свой проект последнюю версию Microsoft Azure Storage Client Library for .NET (код отлично работает с WindowsAzure.Storage v8.0.0 на моей стороне) и проверьте, появится ли такая же проблема. Вы также можете сообщить нам версию WindowsAzure.Storage, которую вы используете сейчас, а затем мы проверим код с этой версией.

Кроме того, попробуйте использовать TableQuery, чтобы сгенерировать запрос и вызвать метод CloudTable.ExecuteQuery для извлечения объекта.

TableQuery<WorkUser> query = new TableQuery<WorkUser>().Where(
    TableQuery.CombineFilters(
     TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "Skype"), 
     TableOperators.And, 
     TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.Equal, skypeid))); 

retrievedSkypeId = table.ExecuteQuery(query).FirstOrDefault().RowKey; 
+1

У меня такая же проблема с WindowsAzure.Storage 8.4.0 на ASP.NET Core 2.0 – Thomas