Azure存储:403服务器无法验证请求

c# azure azure-storage-blobs uwp

6443 观看

3回复

60 作者的声誉

我在这里和谷歌搜索,但我找不到解决方案。

使用我的C#代码,我想从Azure存储Blob中读取一个文件。代码(仅6行)在另一个项目(Windows 8.1 Universal App)中运行良好,但在我的新Windows 10 UWP应用程序中运行不佳。

这是我的代码:

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(azureConnectionString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("container-name");

CloudBlob b1 = container.GetBlobReference("27.76914.json");
StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync("stefano1.json", CreationCollisionOption.ReplaceExisting);
await b1.DownloadToFileAsync(file);

例外情况:

服务器无法验证请求。确保正确形成Authorization标头的值,包括签名。

使用Fiddler4我在消息403上发现了这个错误:

在HTTP请求'R2t9hKsyXf470HF2LNP8T + M2nci0ddE / ojQ0r4UVjJQ ='中找到的MAC签名与任何计算签名不同

我的尝试:

  1. 该应用程序第一次工作(文件下载)。我第二次得到例外。
  2. 如果我更改了请求的文件名:应用程序第一次工作(文件已下载)。我第二次得到例外。
  3. 第二天我立刻得到同样的例外(第一次运行)
  4. 此外,如果我删除bin和obj文件夹,我收到错误
  5. 如果我创建另一个应用程序并尝试下载相同的文件(与第1点相同),它第一次工作,但不是第二次。
  6. 在控制台应用程序中一切正常。

这是Fiddler4 Raw Request(其中*****是我的Azure存储帐户名):

GET https://*****.blob.core.windows.net/container-name/27.76914.json HTTP/1.1
x-ms-client-request-id: accee7e7-646d-417a-b734-1591cbc16a8d
x-ms-date: Thu, 03 Sep 2015 06:31:37 GMT
x-ms-version: 2015-02-21
User-Agent: WA-Storage/5.0.2 (Windows Runtime)
Authorization: SharedKey *****:R2t9hKsyXf470HF2LNP8T+M2nci0ddE/ojQ0r4UVjJQ=
Host: *****.blob.core.windows.net
If-Modified-Since: Sun, 30 Aug 2015 18:52:41 GMT
If-None-Match: "0x8D2B16C2ED82C4A"
Connection: Keep-Alive

谢谢!

作者: Stefano 的来源 发布者: 2015 年 9 月 2 日

回应 (3)


4

386 作者的声誉

决定

这也在我们的GitHub页面上报告:https//github.com/Azure/azure-storage-net/issues/171

我们的主要理论是,高速缓存代理可能位于客户端和服务器之间,影响您的请求。

我们仍在调查,并会告诉你。

作者: Peter Marino - MSFT 发布者: 02.09.2015 10:54

0

71 作者的声誉

我有一个类似的问题(在Java中)试图从本地机器访问blob。尝试下载一个blob将会有两次工作,试图让InputStream从未工作过。在这两种情况下,错误都与您的错误相同。

我的代码总是来自云中的VM。当我将默认协议从HTTP更改为HTTPS时,问题已解决。构建CloudStorageAccount时,有一个构造函数允许您指定默认协议。它也适用于C#(这里

此外,对于记录,AZCopy将失败的HTTP源,具有类似的错误。你可以尝试一下。

作者: Lucian 发布者: 26.01.2016 10:12

0

111 作者的声誉

检查计算机或手机的时区。

作者: Pedro Henrique Pozzer 发布者: 04.07.2019 02:33
32x32