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 ストレージは Storage Explorer でアクセス可能であり、コンテンツの読み取り/アップロードで正常に動作します
- 接続文字列: 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" がなく、問題の原因となることがわかりました。ただし、これら 2 つの値はサンプル プロジェクトに存在します。