天天看點

java azure blobs sas_使用Azure.storage.blobs在。NET Core 3.1中生成SAS過期令牌

在這件事上有點麻煩。 在遵循Microsoft文檔中的示例後,我得到了一個SAS令牌,但遇到了SAS令牌未經過身份驗證的問題。string sastoken = "";

BlobServiceClient blobServiceClient = new BlobServiceClient("DefaultEndpointsProtocol=https;AccountName=accountname;AccountKey=accountkey;EndpointSuffix=core.windows.net");

string containerName = containername;

BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(containerName);

BlobSasBuilder sasBuilder = new BlobSasBuilder()

{

ExpiresOn = DateTime.UtcNow + (new TimeSpan(24, 0, 0)),

BlobContainerName = containerName,

BlobName = imageData.filename,

Resource = "b"

};

sasBuilder.SetPermissions(BlobSasPermissions.Read);

sastoken = sasBuilder.ToSasQueryParameters(new StorageSharedKeyCredential(containername, credentialkey)).ToString();

UriBuilder fulluri = new UriBuilder()

{

Scheme = "https",

Host = string.Format("{0}.blob.core.windows.net", containername),

Path = string.Format("{0}/{1}", "blobtest", "file.bmp"),

Query = sastoken

};

imageData.url = fulluri.Uri.ToString();

imageData.url傳回為:https://accountname.blob.core.windows.net/containername/file.bmp?sv=2019-07-07&se=2020-07-10t14%3a54%3a43z&sr=b&sp=r&sig=UXVC7SAXQTSVGFXJ6l%2boiintMHQJ%2f3nh95v%2flrVM8g%3D

我得到了一個身份驗證錯誤,但是SAS令牌的全部作用就是提供身份驗證。 我肯定我漏掉了什麼,但沒有發現我犯錯的地方。 我找到的大多數資訊都與Microsoft.Azure.Storage包有關,而不是與Azure.Storage.Blob命名空間有關。 歡迎任何幫助或建議。 謝啦!