Windows Azure Blobで画像をアップロードしようとしていますが、処理できない次のエラーが発生します。
サーバーはリクエストの認証に失敗しました。 Authorizationヘッダーの値が、署名を含めて正しく形成されていることを確認してください。
コンテナーを作成しようとすると、エラーが発生します。
container.CreateIfNotExists()
これが私のコードです
try
{
Microsoft.WindowsAzure.Storage.CloudStorageAccount storageAccount = Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse(ConfigurationManager.AppSettings["StorageConnectionString"]);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
// Retrieve a reference to a container.
CloudBlobContainer container = blobClient.GetContainerReference("samples");
// Create the container if it doesn't already exist.
// here is the error
if (container.CreateIfNotExists())
{
container.SetPermissions(
new BlobContainerPermissions
{
PublicAccess = BlobContainerPublicAccessType.Blob
});
}
CloudBlockBlob blockBlob = container.GetBlockBlobReference("Image1");
using (var fileStream = System.IO.File.OpenRead(@"Path"))
{
blockBlob.UploadFromStream(fileStream);
}
}
catch (StorageException ex1)
{
throw ex1;
}
私はコードで多くのオプションを試しましたが、それでもエラーが発生します。
誰でも手伝ってくれませんか?ありがとう。
コメントで他の人が示唆したように、私のPCの時間は1時間ずれていました。それを修正することで問題は解決しました。
私の場合、期限が切れたのは実際には共有アクセス署名(SAS)でした。 portal.Azure.comの共有アクセス署名を将来の終了日に1年(またはそれ以上)追加して更新(実際には新しい署名を作成)します。そして、すべての問題が修正されました。
私の場合、コンソールアプリケーションの引数としてアクセス署名付きのストレージ接続文字列を渡していました。コマンドラインの「%」は、特殊文字の「コマンドラインパラメータ」です。 '%'はアクセス署名(SAS)に表示されます。あなたはパーセント%をエスケープし、それを%%倍にする必要があります。
REST APIエンドポイントを介してBLOBストレージにアクセスしようとしたときに、このメッセージが表示されました。
以下は、Authorization
ヘッダーを含むリストコンテナー操作を呼び出したときに取得した応答です
<?xml version="1.0" encoding="utf-8"?>
<Error>
<Code>AuthenticationFailed</Code>
<Message>Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
RequestId:096c6d73-f01e-0054-6816-e8eaed000000
Time:2019-03-31T23:08:43.6593937Z</Message>
<AuthenticationErrorDetail>Authentication scheme Bearer is not supported in this version.</AuthenticationErrorDetail>
</Error>
解決策はヘッダーの下に含めることでした
x-ms-version: 2017-11-09
コンピュータまたは携帯電話のタイムゾーンを確認します。
メタデータを含むAzure Blobファイルのアップロードに.NET SDKを使用しています。メタデータを含むファイルをAzure Blobストレージにアップロード中にエラーが発生しました。エラーは「サーバーはリクエストの認証に失敗しました。Authorizationヘッダーの値が署名を含めて正しく形成されていることを確認してください。」しかし、これらのエラーはすべてではなく、ほんの数ファイルでした。
ここでの問題ファイルのメタデータがある場合、メタデータには、値の最初と最後に特殊文字(�)または追加のスペース()を含めないでください。
メタデータ値を修正すると、ファイルは正常にアップロードされます。