【问题标题】:Azure Blob Storage - Server failed to authenticate the requestAzure Blob 存储 - 服务器无法对请求进行身份验证
【发布时间】:2017-10-25 15:48:11
【问题描述】:

得到以下错误:

服务器未能验证请求。确保值 包括签名在内的授权标头格式正确。

我使用的是WindowsAzure.Storage包来获取blob流,很简单。

 _blobClient = CloudStorageAccount
                .Parse(options.ConnectionString)
                .CreateCloudBlobClient();

  var blob = _blobClient.GetContainerReference(containerName)
                .GetBlobReference(blobName);

var file = await blob.OpenReadAsync(null, _requestOptions,
_context).ConfigureAwait(false);

我已经尝试使用帐户密钥和名称以及连接字符串,结果是一样的。

使用 Azure 存储资源管理器也会发生同样的情况,我无法将任何文件上传到存储。 (只是以 0% 的进度继续上传)。仅当我直接连接到我的 Microsoft 帐户时才有效。

  • 我的电脑时间和时区是自动设置的。
  • 存储区域为东南亚、东亚

还有什么额外的配置需要做的吗?

谢谢

【问题讨论】:

  • 请检查两件事:1) 使用的存储帐户密钥是否正确。 2)您本地机器上的时间是正确的。根据我的经验,这是您收到错误的两个原因。
  • 您是否使用共享访问令牌 (SAS) 访问存储?
  • @GauravMantri 存储帐户是直接从 Azure 门户复制的,时间和时区是自动设置的。这是一个全新的帐户。我的时区是 UTC +8:00,存储的选定区域是东南亚、东亚。
  • @aaronR 使用存储帐户和密钥
  • David...当您在代码中收到错误时,您可以检查您收到的 StorageException 的 RequestInformation 属性吗?通常您会找到有关此错误的更多详细信息(请查看其中的ExtendedErrorInformation)。请使用这些详细信息更新您的问题。谢谢。

标签: c# azure


【解决方案1】:

我在时区与主机不同的 Android 模拟器中运行代码。时区需要设置设备级别,以便标头签名正确发送到 Azure API。

这解决了问题。

【讨论】:

    猜你喜欢
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    • 2021-08-23
    • 2014-09-19
    • 2020-02-02
    • 2021-12-17
    • 1970-01-01
    相关资源
    最近更新 更多