【问题标题】:Azure CloudBlobContainer.CreateIfNotExists() throws Forbidden (403) on Local DevelopmentAzure CloudBlobContainer.CreateIfNotExists() 在本地开发中抛出 Forbidden (403)
【发布时间】:2018-02-08 09:21:25
【问题描述】:

我已经开始在 blobContainer.createIfNotExists 上收到 403 错误。以下是源代码。

 CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
        string blobContainerName =string.IsNullOrEmpty(_sessionContext.DomainName) ? "localdevblob": _sessionContext.DomainName.ToLower();
        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
        CloudBlobContainer container = blobClient.GetContainerReference(blobContainerName);
        container.CreateIfNotExists();

已验证的事情:

  • 容器名称为小写且符合标准
  • 本地 blob 存储可在存储资源管理器中访问,并且可以正常读取/上传内容
  • 连接字符串是: 添加 key="StorageConnectionString" value="UseDevelopmentStorage=true"

预计升级库可能会解决问题:

  • 将存储模拟器升级到 5.2
  • 将 Nuget 包 WindowsAzure.Storage 升级到 8.4.0(之前是 8.1.0,但已经报错)

异常截图如下:

更新

显然,我刚刚从https://github.com/Azure-Samples/storage-blob-dotnet-getting-started.git 下载了示例,并且也可以。当我比较我的项目和示例项目中的 cloudBlobClient 对象时,我发现出于某种奇怪的原因,我发现 blobClient(在我的项目中)缺少“AuthenticationHandler”和可能导致问题的“Key”。但是这两个值存在于示例项目中。

【问题讨论】:

  • 你能分享两件事吗:1)你工作的时区是什么,2)storageAccount 变量的值?
  • 1) 英国时区 2) devstoreaccount1 (uri: 127.0.0.1:10000/devstoreaccount1)
  • 关于#1,它是GMT+1,对吧?还是格林威治标准时间?
  • 是的,它是 GMT+1(夏令时期间)。
  • 嗯...这很奇怪。我刚刚尝试创建一个 blob 容器,它对我来说效果很好(我使用了与你相同的库和模拟器版本)。您尝试创建的 blob 容器的名称是什么?

标签: azure azure-storage azure-blob-storage azure-storage-emulator


【解决方案1】:

在 blobContainer.createIfNotExists 上出现 403 错误

我创建了一个示例来重现我身边的问题,该代码可以正常安装 WindowsAzure.Storage sdk v8.1.0v8.1.4v8 .4.0.

CloudStorageAccount storageAccount = CloudStorageAccount.Parse("UseDevelopmentStorage=true");

CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

CloudBlobContainer container = blobClient.GetContainerReference("mycontainer");

container.CreateIfNotExists();

我还用 WindowsAzure.Storage v7.0.0 测试了代码,它也可以工作。

另外,一些社区成员报告如果在项目中安装了 ApplicationInsights,WindowsAzure.Storage sdk 在执行存储操作时返回 403 错误,SO thread 对此进行了讨论。

【讨论】:

  • 主要问题似乎是由 ApplicationInsights 引起的,删除它解决了问题。
  • 这里也是 ApplicationInsights 在将 Azure Storage Emulator 升级到 5.10 后导致的问题。通过将 ApplicationInsights 从 2.4.0 更新到 2.10.0(今天的最新版本)解决了这个问题。
猜你喜欢
  • 2014-09-03
  • 1970-01-01
  • 1970-01-01
  • 2020-04-24
  • 2018-05-06
  • 2013-12-09
  • 2012-02-26
  • 2011-08-09
  • 1970-01-01
相关资源
最近更新 更多