Microsoft.WindowsAzure.Storage.StorageException:远程服务器返回错误:(403)

时间:2017-07-14 11:57:41

标签: azure azure-storage

在新发布时,这是最初的错误:

  

System.ApplicationException:跟踪侦听器AzureBlobTraceListener   被禁用。 ---> System.InvalidOperationException:SAS的URL   未指定云存储帐户。使用环境   变量' DIAGNOSTICS_AZUREBLOBCONTAINERSASURL'定义it.at   Microsoft.WindowsAzure.WebSites.Diagnostics.AzureBlobTraceLi stener.RefreshConfig()

然后我将DIAGNOSTICS_AZUREBLOBCONTAINERSASURL添加到其值设置为的应用程序设置中 生成的Blob服务SAS URL。在这,我得到一个新的错误:

  

System.ApplicationException:跟踪侦听器AzureBlobTraceListener   被禁用。 ---> System.ArgumentException:缺少必需的   有效共享访问签名的参数   Microsoft.WindowsAzure.Storage.Core.Auth.SharedAccessSignatureHelper.ParseQuery(IDictionary的2 queryParameters, Boolean mandatorySignedResource) at Microsoft.WindowsAzure.Storage.Core.Util.NavigationHelper.ParseBlobQueryAndVerify(Uri address, StorageCredentials& parsedCredentials, Nullable 1安培;   parsedSnapshot)at   Microsoft.WindowsAzure.Storage.Core.Util.NavigationHelper.ParseBlobQueryAndVerify(StorageUri   地址,StorageCredentials& parsedCredentials,Nullable`1&   parsedSnapshot)at   Microsoft.WindowsAzure.Storage.Blob.CloudBlobContainer.ParseQueryAndVerify(StorageUri   地址,StorageCredentials凭据)   Microsoft.WindowsAzure.Storage.Blob.CloudBlobContainer..ctor(StorageUri   containerAddress,StorageCredentials凭据)at   Microsoft.WindowsAzure.WebSites.Diagnostics.AzureBlobTraceListener.RefreshConfig()

然后我将sr=b添加到' DIAGNOSTICS_AZUREBLOBCONTAINERSASURL'导致以下错误:

  

Microsoft.WindowsAzure.Storage.StorageException:远程服务器   返回错误:(403)禁止。 ---> System.Net.WebException:The   远程服务器返回错误:(403)禁止。在   System.Net.HttpWebRequest.GetResponse()at   Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync [T](RESTCommand 1 cmd, IRetryPolicy policy, OperationContext operationContext) --- End of inner exception stack trace --- at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand 1   cmd,IRetryPolicy策略,OperationContext operationContext)at   Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob.DownloadBlockList(BlockListingFilter   blockListingFilter,AccessCondition accessCondition,   BlobRequestOptions选项,OperationContext operationContext)at   Microsoft.WindowsAzure.WebSites.Diagnostics.AzureBlobTraceListener.AppendStreamToBlob(流   流)   Microsoft.WindowsAzure.WebSites.Diagnostics.AzureBlobTraceListener.ConsumeBuffer()   请求信息请求ID:5225782d-0001-0175-6d94-fc82dd000000   RequestDate:星期五,2017年7月14日11:33:16 GMT StatusMessage:服务器失败   验证请求。确保授权的值   标题正确形成,包括签名。   错误码:AuthenticationFailed

用于在应用设置中声明AzureWebJobsDashboard和AzureWebJobsStorage的连接字符串: enter image description here

1 个答案:

答案 0 :(得分:5)

根据您的描述,我猜您遇到错误的原因是您的SAS令牌没有足够的权限来CRUD blob。

SAS令牌必须是blob容器SAS令牌而不是blob SAS令牌。

此外,如果您设置了azure Web应用程序的诊断日志应用程序日志记录功能,它将在您的Web应用程序的appsetting中自动生成SAS令牌。

更多细节,您可以参考下图:

在诊断日志中设置存储帐户。

enter image description here

然后它会自动设置appsetting:

enter image description here

更新

  

无法验证Microsoft Azure WebJobs SDK仪表板连接字符串。 Microsoft Azure存储帐户连接字符串格式不正确。

如果您将webjobs上传到您的网络应用程序,则网络作业需要两个appsetting。一个是Dashboard连接字符串,另一个是AzureWebJobsStorage。

这两个设置都需要存储连接字符串而不是存储SAS。

您可以找到存储连接字符串,如下图所示:

1.打开存储访问密钥功能。

enter image description here

2.复制连接字符串:

enter image description here

3.在Web应用程序设置中更换连接字符串。

enter image description here