Внесите следующие изменения в свой код:
1. добавьте file share name
в конце URL-адреса при создании ShareClient
( Примечание : для URL-адреса I видите, вы используете fileshareName.file.core.windows.net
, это должно быть your_storage_account_name.file.core.windows.net
), как показано ниже:
var shareClient = new ShareClient(new Uri("https://your_storage_account_name.file.core.windows.net/the_share_name"), sharedKeyCredential);
2. в блоке кода new ShareSasBuilder{}
удалите FilePath = file.Uri.LocalPath,
Затем я протестировал код (с последней версией Azure.Storage.Files.Shares 12.2.1
), он генерирует действительный и рабочий URL-адрес с sastoken. Мой код, как показано ниже:
string storageAccount= "yy1";
string password = "xxxx";
var sharedKeyCredential = new StorageSharedKeyCredential(storageAccount, password);
//the file share name is aaa
var shareClient = new ShareClient(new Uri("https://yy1.file.core.windows.net/aaa"), sharedKeyCredential);
ShareDirectoryClient directory = shareClient.GetDirectoryClient("a11");
ShareFileClient file = directory.GetFileClient("1.txt");
var shareSasBuilder = new ShareSasBuilder
{
ShareName = "aaa",
//FilePath = file.Uri.LocalPath,
Protocol = SasProtocol.None,
StartsOn = DateTime.UtcNow.AddHours(-1),
ExpiresOn = DateTime.UtcNow.AddHours(+2),
IPRange = new SasIPRange(IPAddress.None, IPAddress.None)
};
shareSasBuilder.SetPermissions(ShareFileSasPermissions.Read);
var url = new Uri(file.Uri + "?" + shareSasBuilder.ToSasQueryParameters(sharedKeyCredential).ToString());