我正在尝试在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;
}
我在我的代码中尝试了很多选项,但仍然遇到错误。
有人可以帮我吗?谢谢。
根据评论中的其他人的建议,我的电脑的时间减少了1小时。纠正它解决了这个问题。
当我尝试通过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
检查计算机或手机的时区。
在我的情况下,它实际上是过期的共享访问签名(SAS)。通过在将来为结束日期添加一年(或更多)来更新(实际上新建一个)portal.azure.com中的共享访问签名。并解决了所有问题。