CreateIfNotExistsAsync - 此请求无权执行此操作

Posted

技术标签:

【中文标题】CreateIfNotExistsAsync - 此请求无权执行此操作【英文标题】:CreateIfNotExistsAsync - This request is not authorized to perform this operation 【发布时间】:2020-08-16 04:54:14 【问题描述】:

我正在使用将图像放入 blob 存储的 Microsoft 示例客户端应用程序。

它可以在我的笔记本电脑上运行,但是当我将它放在我的 Azure VM Windows 服务中时,我收到以下错误:

ERROR: This request is not authorized to perform this operation. -    at 
Microsoft.Azure.Storage.Core.Executor.Executor.<ExecuteAsync>d__1`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Azure.Storage.Blob.CloudBlobContainer.<CreateAsync>d__9.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Azure.Storage.Blob.CloudBlobContainer.<CreateIfNotExistsAsync>d__21.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()

IP 地址(笔记本电脑和虚拟机)都已添加到防火墙设置中。

我对两者使用相同的访问密钥。我也试过第二个键。

            string containerName = ContainerPrefix + Guid.NewGuid();
        CloudStorageAccount storageAccount = Common.CreateStorageAccountFromConnectionString();
        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
        CloudBlobContainer container = blobClient.GetContainerReference(containerName);
        try
        
            BlobRequestOptions requestOptions = new BlobRequestOptions()  RetryPolicy = new NoRetry() ;
            await container.CreateIfNotExistsAsync(requestOptions, null);
        
        catch (StorageException ex)
        
            Console.WriteLine($"ERROR: ex.Message - ex.StackTrace");
            Console.ReadLine();
            throw;
        

想法?

吉娜

【问题讨论】:

由于它使用的是内部网络白名单,因此公共 ip 将不允许访问它。要正确设置防火墙,您应该将 VM 的虚拟网络添加到防火墙设置中。 【参考方案1】:

尝试允许访问:所有网络以消除 IP 地址问题的可能性。

【讨论】:

我会试一试,但为什么 Azure 被阻止但互联网是开放的?同样,我儿子 2015 年的笔记本电脑可以运行它,但我不能在 Azure 中运行? 不是我一直在寻找的答案,但可能更适合 Serverfault。这行得通,但我最终需要知道如何正确设置 azure。 仔细检查虚拟机的公共 IP 并确保它与您列入白名单的相同。

以上是关于CreateIfNotExistsAsync - 此请求无权执行此操作的主要内容,如果未能解决你的问题,请参考以下文章