azure中创建容器退出方法

Creating a container in azure exits the method

我正在学习 Azure 存储开发,我正在尝试创建一个容器,然后将文件上传到其中。我创建了一个控制台应用程序并从 Main 调用上传方法。这是创建容器的上传方法的前半部分。

       public async static Task<bool> UploadToAzure()
        {
            string containerName = "sample-"+Guid.NewGuid().ToString();

            var connectionString = "XXXXXXXXXXXXXXXXXXXXX";
            var blobServiceClient = new BlobServiceClient(connectionString);
            
            BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(containerName);

            try
            {
                var test = blobServiceClient.GetBlobContainers();
                foreach (var container in test)
                {
                    Console.WriteLine(container.Name);
                }

                var result = await containerClient.CreateIfNotExistsAsync(Azure.Storage.Blobs.Models.PublicAccessType.BlobContainer);
                var containerProp = await containerClient.GetPropertiesAsync();
                Console.WriteLine(containerProp.Value);

            }
            catch (Exception ex)
            {
                 Console.WriteLine(ex.Message+"\n}");
            }

我一开始只是调用 containerclient.CreateIfNotExistsAnsync(),它不会创建容器。一时兴起,我添加了 blobServiceClient.GetBlobContainers() ,现在它将创建容器。我可以注释掉 blobServiceClient.GetBlobContainers() 并且它不会创建容器。我可以把它放在 create 方法之后,但它仍然不起作用。这是第一期。

第二个是,它在 containerclient.CreateIfNotExistsAnsync() 方法内部退出代码。它将创建文件夹但永远不会点击下一行代码。我在控制台中收到一条消息,它“以代码 0 退出。按任意键关闭此 window...”。它不会命中 Catch 或显示任何类型的错误,它只是存在。

我从我的 Udemy 课程中得到了这个模式,并且我在网上阅读了很多文章,这些似乎是正确的步骤。任何建议表示赞赏。

谢谢

从我们这边重现后,您使用的代码一直在为我们工作,直到我们发现您在调用 UploadToAzure() 时错过了使用 await 。

下面是我们使用的代码

namespace ConsoleApplication
{
    class Program
    {
        static async Task Main(string[] args)
        {
            await UploadToAzure();
        }
        public async static Task<bool> UploadToAzure()
        {
            string containerName = "sample-" + Guid.NewGuid().ToString();

            var connectionString = "<YOUR_COONECTION_STRING>";
            var blobServiceClient = new BlobServiceClient(connectionString);

            BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(containerName);
            await containerClient.CreateIfNotExistsAsync(Azure.Storage.Blobs.Models.PublicAccessType.BlobContainer);

            return true;
        }
    }
}

否则你可以完全删除异步并拥有

namespace CreateContainer
{
    class Program
    {
        static async Task Main(string[] args)
        {
            UploadToAzure();
        }
        public static bool UploadToAzure()
        {
            string containerName = "sample-" + Guid.NewGuid().ToString();

            var connectionString = "<YOUR_COONECTION_STRING>";
            var blobServiceClient = new BlobServiceClient(connectionString);

            BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(containerName);
            containerClient.CreateIfNotExists(Azure.Storage.Blobs.Models.PublicAccessType.BlobContainer);

            return true;
        }
    }
}

注意:最好使用异步方法,因为在处理大量数据时可能会遇到一些问题。