【发布时间】:2018-09-02 23:01:43
【问题描述】:
我想将 SAS uris 提供给其他应用程序,以允许它们将文件发送到 blob 容器。但是,尝试上传文件时代码失败,给我一个异常,指出:
服务器未能验证请求。确保 Authorization 标头的值格式正确,包括签名。
我正在使用 aspnetcore 和 WindowsAzure.Storage 版本 9.1.0。
var acc = CloudStorageAccount.Parse("mysecrets");
CloudBlobClient client = acc.CreateCloudBlobClient();
var container = client.GetContainerReference("myblobcontainer");
await container.CreateIfNotExistsAsync();
var permissions = container.GetPermissionsAsync().Result;
permissions.SharedAccessPolicies.Add("writepolicy",
new SharedAccessBlobPolicy
{
Permissions =
SharedAccessBlobPermissions.Add |
SharedAccessBlobPermissions.Create |
SharedAccessBlobPermissions.List |
SharedAccessBlobPermissions.Write,
});
await container.SetPermissionsAsync(permissions);
var sas = container.GetSharedAccessSignature(null, "writepolicy");
var accessUri = container.Uri.ToString() + sas;
var cloudBlobContainer = new CloudBlobContainer(new Uri(accessUri));
var blob = cloudBlobContainer.GetBlockBlobReference("myfile.txt");
await blob.UploadFromFileAsync("foo.txt");
我也尝试过像这样创建 cloudBlobContainer:
var cloudBlobContainer =
new CloudBlobContainer(container.Uri, new StorageCredentials(sas));
【问题讨论】:
标签: azure azure-storage