【问题标题】:Azure Storage CRUD operations using .NET Core使用 .NET Core 的 Azure 存储 CRUD 操作
【发布时间】:2019-04-23 12:09:30
【问题描述】:

我最近一直在使用 Azure 存储资源,尤其是我只是在玩表中的 CRUD 操作。我能够使用 .NET Framework 完成一项任务,但是,最近我的需求发生了变化,我不得不迁移到 .NET Core。我编写了相同类型的代码,它到达CreateTable() 中的try-catch 语句并无缘无故停止,我没有收到任何异常或消息,程序只是从那里退出。我一直在试图解决这个问题,到目前为止,我找到了以下解决方案,它似乎缺少了一小部分来使其工作。

此外,之前我使用 CosmosDB API 来执行此操作。不幸的是,它在 .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);
    }

}

【问题讨论】:

  • 您不应该在 Main 方法中等待对 CreateTable 方法的调用,因为这是一个异步方法吗?
  • @GauravMantri 很好,但这不是重点
  • 请解释一下“这不是重点”是什么意思。
  • @GauravMantri 我的意思是这是一个很好的电话,但无论如何它无助于解决这个问题。
  • 谢谢,但现在我很困惑:)。您提到您的代码/程序正在退出。那是因为您没有等待异步操作完成。您是否尝试过以下汤姆的解决方案?你还有同样的问题吗?

标签: c# azure azure-table-storage azure-blob-storage


【解决方案1】:

我编写了相同类型的代码,它到达 CreateTable() 中的 try-catch 语句并无缘无故停止。

由于 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;

  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-09
    • 2017-08-13
    • 2016-04-15
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    相关资源
    最近更新 更多