【发布时间】: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