Операции Azure Storage CRUD с использованием .NET Core - PullRequest
0 голосов
/ 21 ноября 2018

Недавно я работал с ресурсами хранилища Azure, особенно я просто играл с операциями CRUD в таблице.Мне удалось выполнить задачу с использованием .NET Framework, однако в последнее время мои требования изменились, и мне пришлось перейти на .NET Core.Я написал код того же типа, когда он достигает оператора try-catch в CreateTable() и останавливается без причины, я не получаю никаких исключений или сообщений, программа просто завершает работу.Я пытался разобраться в этой проблеме, поэтому дошел до следующего решения, в котором, кажется, отсутствует крошечный кусочек, чтобы заставить его работать.

Более того, ранее я использовал API CosmosDB для выполнения этих операций.К сожалению, он недоступен в .NET Core, поэтому я придумал это решение.

Мои мысли: меня также волнует вопрос аутентификации, так как я не могу определить, был ли он успешным или нет.Проходит Auth() ну без проблем.Буду признателен, если кто-нибудь сможет дать мне верное направление в решении этой проблемы.Спасибо!

    static CloudStorageAccount _storageAccount;
    static void Main(string[] args)
    {
        Auth();
        CreateTable();
    }
    static void Auth()
    {
         _storageAccount = new CloudStorageAccount(
             new Microsoft.WindowsAzure.Storage.Auth.StorageCredentials(
                 "MyResource", "MyKey"),true);
    }

    async static void CreateTable()
    {
        CloudTableClient tableClient = _storageAccount.CreateCloudTableClient();
        CloudTable peopleTable = tableClient.GetTableReference("XYZ");
        try
        {
            await peopleTable.CreateIfNotExistsAsync();
        }
        catch(Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
        People customer = new People("Garry", "Johnson");
        customer.Email = "xxx@yyy.zzz";
        customer.PhoneNumber = "123456789";
        TableOperation insertOperation = TableOperation.Insert(customer);
        var result = await peopleTable.ExecuteAsync(insertOperation);
    }

}

1 Ответ

0 голосов
/ 21 ноября 2018

Я написал код того же типа, когда он достигает оператора try-catch в CreateTable () и останавливается без причины.

Поскольку CreateTable () является асинхронным методом,Программа выйдет без ожидания, чтобы получить результат.

Буду признателен, если кто-нибудь подскажет мне правильное решение этой проблемы

Пожалуйста, попробуйтеиспользовать следующий демонстрационный код.Если получить 204 в консоли значения, которые создают таблицу и успешно вставить запись в таблицу, или вы получите информацию об исключении в консоли.

static void Main(string[] args)
        {
            Auth();
            var result = CreateTable().Result;
            Console.WriteLine(result);
            Console.ReadKey();
        }

async static Task<string> CreateTable()
{
      CloudTableClient tableClient = _storageAccount.CreateCloudTableClient();
      CloudTable peopleTable = tableClient.GetTableReference("XYZ");
      try
         {
                await peopleTable.CreateIfNotExistsAsync();
                People customer = new People("Garry", "Johnson");
                customer.Email = "xxx@yyy.zzz";
                customer.PhoneNumber = "123456789";
                TableOperation insertOperation = TableOperation.Insert(customer);
                var result = await peopleTable.ExecuteAsync(insertOperation);
                return result.HttpStatusCode.ToString();
        }
        catch (Exception ex)
        {
             Console.WriteLine(ex.Message);
        }
        return null;

  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...