使用.NET Core的Azure存储CRUD操作

时间:2018-11-20 23:48:52

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

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

此外,以前我使用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);
    }

}

1 个答案:

答案 0 :(得分:1)

  

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

由于CreateTable()是一个异步方法,因此程序将立即退出,而无需等待获取执行结果。

  

如果有人能给我正确的方向来解决这个问题,我将不胜感激

请尝试使用以下演示代码。如果在控制台中获得204的含义即成功创建表并将记录插入到表中,否则您将在控制台中获得异常信息。

for (var i = 0; i < input.files.length; i++) {
var file = this.files[i];
var fd = new FormData();
fd.append("th_photo", file);

console.log("========= START ==========");

var loaderName = 'loader_n' + i + '"';
console.log("-> " + loaderName);

var loader = '<div id="' + loaderName + ' class="content-loader">'+
            '<svg class="loader-circular" viewBox="25 25 50 50">'+
            '<circle class="loader-path" cx="50" cy="50" r="20" fill="none" stroke-width="2" stroke-miterlimit="10"/>'+
            '</svg>'+
            '</div>';
console.log("-> " + loader);

$.ajax({
    type: 'POST',
    dataType: 'json',
    cache: false,
    processData: false,
    contentType: false,
    url: '../assets/_php/actions.php',
    data: fd,
    beforeSend:function(data){
    $('.up_preview').append(
        '<div class="uploaded_photo_loader" id="tmp_'+i+'">'
         +loader+'</div>');
    },
    success:function(data){
        $('.up_preview').append(
            '<div class="uploaded_photo_grid">'+
            '<img class="previewItem" src="'+data.fcontent+'">'+
            '</img></div>');
        var newName = '"#' + loaderName; //Get the div ID and using it on jQuery
        console.log("-> " + newName);
        $(newName).hide();

                }
            });
        }
     }