【发布时间】:2017-11-07 16:11:35
【问题描述】:
我的测试站点在尝试从 azure blob 存储访问文件时,在部署开始后出现 403 被禁止返回。 这只是我们测试环境的一个问题,新版本在生产中运行良好。生产和测试都托管在 Azure 中,并且都使用自己的 Azure Blob 存储。
我尝试重新生成 blob 存储的访问密钥,但没有任何运气。
我可以在本地使用访问密钥并连接到测试 blob 存储并正常访问文件。
如果我尝试更改测试环境以使用生产 blob 存储,我仍然会收到 403 禁止错误。
Microsoft.WindowsAzure.Storage.StorageException:远程服务器 返回错误:(403)禁止。 ---> System.Net.WebException: 远程服务器返回错误:(403)禁止。在 System.Net.HttpWebRequest.GetResponse() 在 Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand
1 cmd, IRetryPolicy policy, OperationContext operationContext) in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Core\Executor\Executor.cs:line 677 --- End of inner exception stack trace --- at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand1 cmd, IRetryPolicy 策略, OperationContext operationContext) 中 c:\程序文件 (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Core\Executor\Executor.cs:line 604 在 Microsoft.WindowsAzure.Storage.Blob.CloudBlobClient.GetBlobReferenceFromServer(StorageUri blobUri、AccessCondition accessCondition、BlobRequestOptions 选项、 C:\Program Files 中的 OperationContext operationContext) (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Blob\CloudBlobClient.cs:line 563 在 Microsoft.WindowsAzure.Storage.Blob.CloudBlobContainer.GetBlobReferenceFromServer(字符串 blobName、AccessCondition accessCondition、BlobRequestOptions 选项、 C:\Program Files 中的 OperationContext operationContext) (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Blob\CloudBlobContainer.cs:line 818 at ASP.XYZ in d:\XYZ.cshtml:line 27 请求信息 请求 ID:fc137321-0001-00ce-02d2-de5736000000 请求日期:6 月 6 日,星期二 2017 14:41:21 GMT StatusMessage:服务器未能验证 要求。确保 Authorization 标头的值已形成 正确包括签名。
这一定是运行测试站点的 azure app 服务的问题。我只是看不出它可能是什么。
请参阅此处的要点以获取一些非常简化的代码https://gist.github.com/Skaanning/5cddf95a0d1ff210482d99a683e0be9c。
编辑 我有多个其他 blob 商店,但它们都没有在测试站点上工作。但它们在其他环境中也能正常工作。
我尝试放大和缩小它,但没有任何运气。但是后来我尝试从 32 位更改为 64 位,现在它可以工作了!我会保持这个问题,以防有人可以解释这里到底发生了什么
【问题讨论】:
-
两个存储帐户/容器的配置是否相同?特别是在容器级别,它们是否具有相同的访问策略?另外,“blob.storage”中的内容是密钥还是连接字符串?
-
blob.storage 是来自 web.config 的连接字符串。它一直工作得很好,直到它突然没有了。他们都有 blob 访问策略