我正在尝试使用 SAS 令牌在 Azure 中上传文件,但在尝试上传文件时收到此错误:
MD5 不是已知的哈希算法
我有这两种我使用的方法,一种是生成将用于上传文件的文件链接:
public string GetBlobSASUploadFileLink(string fileName)
{
var connectionString = string.Format("DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1}", StorageAccountName, AccessKey);
var storageAccount = CloudStorageAccount.Parse(connectionString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference(FilesContainer);
SharedAccessBlobPolicy sasConstraints = new SharedAccessBlobPolicy();
sasConstraints.SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(5);
sasConstraints.Permissions = SharedAccessBlobPermissions.Write | SharedAccessBlobPermissions.Create;
var blob = container.GetBlockBlobReference(fileName);
return string.Format("{0}{1}", blob.Uri, blob.GetSharedAccessSignature(sasConstraints));
}
这个方法也会引发异常,它应该在 Azure 中上传文件:
public async Task UploadFilesToBlob(string fileLink, IBrowserFile file)
{
try
{
var cloudBlockBlob = new CloudBlockBlob(new Uri(fileLink));
await cloudBlockBlob.UploadFromStreamAsync(file.OpenReadStream(912000000));
}
catch (Exception ex)
{
}
}
在该方法的第二个方法中,UploadFromStreamAsync
抛出异常。我猜该框架使用 MD5 算法,但 Azure 使用另一种加密哈希算法,但我不知道应该做什么。