无法从本地环境将Blob存储上传/下载到容器中

问题描述 投票:0回答:1

我有一个退出功能的应用程序,该应用程序具有从sftp下载文件,处理文件并将文件上传到blob存储的功能。此功能应用已在天蓝色部署并且可以正常工作。但是,当我从Visual Studio(本地)运行相同的文件时,将文件上传到Blob存储时会出错。

Microsoft.Azure.Storage.StorageException:使用该权限,该请求无权执行此操作。

我确保此应用在存储帐户中分配了必要的贡献者角色(这就是为什么它从azure开始工作的原因)。我是否需要在本地设置或项目设置中配置其他设置,才能使这些功能像部署到天蓝色时一样工作?还是存储帐户中有任何设置可以覆盖从开发人员运行但仅从天蓝色运行时执行上传操作的条件?

[我确保我使用本地设置将所有内容从具有存储帐户名称,blob存储的连接字符串,sftp url和具有sft站点的详细信息的密钥库名称的应用程序配置中复制,

更新:忘了提到从我的计算机上载命令行成功从命令行上传了z storage container upload命令。

update2:按照我的建议,我遵循了tutorial,成功地创建了容器,上传了blob并进行了清除,没有错误。然后,我将代码合并以将简单的下载blob模拟到内存流中,这也会引发错误

此请求无权使用此命令执行此操作允许(请参阅底部的完整日志)

下载blob的代码:

static async Task TokenCredentialsSample()
{
    var tenantId = "xxxxx-xxxx-xxxx-xxxx-xxxxxxxx";
    var tokenProvider = new AzureServiceTokenProvider().GetAccessTokenAsync("https://storage.azure.com/",tenantId);
    var tokenCredential = new TokenCredential(tokenProvider.Result);
    var storageCredentials = new StorageCredentials(tokenCredential);
    var uri = new Uri("https://mystorageaccount.blob.core.windows.net/mycontainer/inbound/myfile.csv");

    var cloudBlockBlob = new CloudBlockBlob(uri, storageCredentials);

    var memoryStream = new MemoryStream();

    cloudBlockBlob.DownloadToStream(memoryStream); // Error here
    memoryStream.Position = 0;
    memoryStream.Close();

}

我还确保我从命令行键入az登录以切换以选择正确的订阅,并且在Visual Studio选项中也选择了该帐户。

错误日志:

Microsoft.Azure.Storage.StorageExceptionHResult = 0x80131500Message =此请求无权使用此权限执行此操作。源= Microsoft.Azure.Storage.Common堆栈跟踪:在Microsoft.Azure.Storage.Core.Executor.Executor.d__11.MoveNext() at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter1.GetResult()在Microsoft.Azure.Storage.Core.Executor.Executor中。<> c__DisplayClass0_01.<ExecuteSync>b__0() at Microsoft.Azure.Storage.Core.Util.CommonUtility.RunWithoutSynchronizationContext[T](Func1 actionToRun)在Microsoft.Azure.Storage.Core.Executor.Executor.ExecuteSync [T](RESTCommand1 cmd, IRetryPolicy policy, OperationContext operationContext) at Microsoft.Azure.Storage.Blob.CloudBlob.DownloadRangeToStream(Stream target, Nullable1偏移量,可空1的长度,AccessCondition accessCondition,BlobRequestOptions选项,OperationContext operationContext)在Microsoft.Azure.Storage.Blob.CloudBlob.DownloadToStream(流目标,AccessCondition accessCondition,BlobRequestOptions选项,OperationContext operationContext)在C:... \ source \ repos \ BlobStorage \ Program.cs:line 111中的BlobStorage.Program.d__2.MoveNext()在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)在System.Runtime.CompilerServices.TaskAwaiter.GetResult()在c:... \ source \ repos \ BlobStorage \ Program.cs:line 19中的BlobStorage.Program.d__0.MoveNext()中]

此异常最初是在此调用堆栈上抛出的:Microsoft.Azure.Storage.Core.Executor.Executor.ExecuteAsync(Microsoft.Azure.Storage.Core.Executor.RESTCommand,Microsoft.Azure.Storage.RetryPolicies.IRetryPolicy,Microsoft.Azure.Storage.OperationContext,System.Threading.CancellationToken)System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task)System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)System.Runtime.CompilerServices.TaskAwaiter.GetResult()Microsoft.Azure.Storage.Core.Executor.Executor.ExecuteSync.AnonymousMethod__0()Microsoft.Azure.Storage.Core.Util.CommonUtility.RunWithoutSynchronizationContext(System.Func)Microsoft.Azure.Storage.Core.Executor.Executor.ExecuteSync(Microsoft.Azure.Storage.Core.Executor.RESTCommand,Microsoft.Azure.Storage.RetryPolicies.IRetryPolicy,Microsoft.Azure.Storage.OperationContext)Microsoft.Azure.Storage.Blob.CloudBlob.DownloadRangeToStream(System.IO.Stream,long ?, long ?, Microsoft.Azure.Storage.AccessCondition,Microsoft.Azure.Storage.Blob.BlobRequestOptions,Microsoft.Azure.Storage.OperationContext)Microsoft.Azure.Storage.Blob.CloudBlob.DownloadToStream(System.IO.Stream,Microsoft.Azure.Storage.AccessCondition,Microsoft.Azure.Storage.Blob.BlobRequestOptions,Microsoft.Azure.Storage.OperationContext)...[通话栈被截断]

我有一个退出功能的应用程序,该应用程序具有从sftp下载文件,处理文件并将文件上传到blob存储的功能。此功能的应用程序已经部署在蔚蓝的环境中,并且可以正常工作...

azure azure-functions azure-blob-storage application-settings
1个回答
0
投票

1)

© www.soinside.com 2019 - 2024. All rights reserved.