我想通过 Azure Blob 容器的 C# 代码动态生成 SAS URL。使用此 SAS URL 我们必须能够上传文件
I want to generate SAS URL dynamically via C# code for Azure Blob Container. Using this SAS URL we must be able to upload the files
我想通过 C# 代码为 Azure Blob 容器动态生成 SAS URL。使用此 SAS URL 我们必须能够将文件上传到 Azure Blob 容器。我已经按照 Microsoft 文档尝试了多种生成 SAS URL 的方法。但我总是收到 AuthorizationResourceTypeMismatch 错误或 AuthorizationPermissionMismatch。
错误:AuthorizationPermissionMismatch
此请求无权使用此权限执行此操作。
private static Uri GetServiceSasUriForContainer(BlobContainerClient containerClient,
string storedPolicyName = null)
{
// Check whether this BlobContainerClient object has been authorized with Shared Key.
if (containerClient.CanGenerateSasUri)
{
// Create a SAS token that's valid for one hour.
BlobSasBuilder sasBuilder = new BlobSasBuilder()
{
BlobContainerName = containerClient.Name,
Resource = "c"
};
if (storedPolicyName == null)
{
sasBuilder.ExpiresOn = DateTimeOffset.UtcNow.AddHours(1);
sasBuilder.SetPermissions(BlobContainerSasPermissions.Read);
}
else
{
sasBuilder.Identifier = storedPolicyName;
}
Uri sasUri = containerClient.GenerateSasUri(sasBuilder);
Console.WriteLine("SAS URI for blob container is: {0}", sasUri);
Console.WriteLine();
return sasUri;
}
else
{
Console.WriteLine(@"BlobContainerClient must be authorized with Shared Key
credentials to create a service SAS.");
return null;
}
}
错误:AuthenticationFailed
服务器无法验证请求。确保授权值 header 的格式正确,包括签名。
我需要这个 sas url 因为我在我的 javascript 中使用这个 url 将文件上传到 Azure Blob 容器。
有人可以帮助我实现这个目标吗?
您收到此错误的原因是您使用 Read
权限 (BlobContainerSasPermissions.Read
) 创建 SAS 令牌。
为了使用 SAS URL 在容器中上传 blob,SAS 令牌需要 Write
(BlobContainerSasPermissions.Write
) 或 Create
(BlobContainerSasPermissions.Create
) 允许。请创建具有这些权限之一的 SAS 令牌,您应该不会收到此错误。
要了解有关权限的更多信息,请参阅此 link:https://docs.microsoft.com/en-us/rest/api/storageservices/create-service-sas#permissions-for-a-directory-container-or-blob。
我想通过 C# 代码为 Azure Blob 容器动态生成 SAS URL。使用此 SAS URL 我们必须能够将文件上传到 Azure Blob 容器。我已经按照 Microsoft 文档尝试了多种生成 SAS URL 的方法。但我总是收到 AuthorizationResourceTypeMismatch 错误或 AuthorizationPermissionMismatch。
错误:AuthorizationPermissionMismatch
此请求无权使用此权限执行此操作。
private static Uri GetServiceSasUriForContainer(BlobContainerClient containerClient,
string storedPolicyName = null)
{
// Check whether this BlobContainerClient object has been authorized with Shared Key.
if (containerClient.CanGenerateSasUri)
{
// Create a SAS token that's valid for one hour.
BlobSasBuilder sasBuilder = new BlobSasBuilder()
{
BlobContainerName = containerClient.Name,
Resource = "c"
};
if (storedPolicyName == null)
{
sasBuilder.ExpiresOn = DateTimeOffset.UtcNow.AddHours(1);
sasBuilder.SetPermissions(BlobContainerSasPermissions.Read);
}
else
{
sasBuilder.Identifier = storedPolicyName;
}
Uri sasUri = containerClient.GenerateSasUri(sasBuilder);
Console.WriteLine("SAS URI for blob container is: {0}", sasUri);
Console.WriteLine();
return sasUri;
}
else
{
Console.WriteLine(@"BlobContainerClient must be authorized with Shared Key
credentials to create a service SAS.");
return null;
}
}
错误:AuthenticationFailed
服务器无法验证请求。确保授权值 header 的格式正确,包括签名。
我需要这个 sas url 因为我在我的 javascript 中使用这个 url 将文件上传到 Azure Blob 容器。 有人可以帮助我实现这个目标吗?
您收到此错误的原因是您使用 Read
权限 (BlobContainerSasPermissions.Read
) 创建 SAS 令牌。
为了使用 SAS URL 在容器中上传 blob,SAS 令牌需要 Write
(BlobContainerSasPermissions.Write
) 或 Create
(BlobContainerSasPermissions.Create
) 允许。请创建具有这些权限之一的 SAS 令牌,您应该不会收到此错误。
要了解有关权限的更多信息,请参阅此 link:https://docs.microsoft.com/en-us/rest/api/storageservices/create-service-sas#permissions-for-a-directory-container-or-blob。