我已经开始在 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 存储可在存储资源管理器中访问,并且可以正常读取/上传内容
- 连接字符串为: add 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”。但是这两个值存在于示例项目中。