создать подпись Share Account в c # - PullRequest
0 голосов
/ 06 ноября 2019

Я хотел бы получить доступ к файлу, расположенному в общих папках Azure, чтобы скопировать его в хранилище BLOB-объектов. Он работает, когда я создаю подпись общего доступа с помощью обозревателя хранилищ Microsoft Azure, щелкнув правой кнопкой мыши файл и пройдя весь процесс, а затем жестко закодировав сгенерированное значение в коде. Но я не могу сгенерировать это значение, используя этот код C #.

var sharedAccessFilePolicy = new SharedAccessFilePolicy()
{
    Permissions = SharedAccessFilePermissions.Read,
    SharedAccessStartTime = DateTime.Now,
    SharedAccessExpiryTime = DateTime.Now.AddDays(1)
};

Этот код также генерирует SAS, но он все равно не работает. любая идея? Кстати, я использую Microsoft.Azure.Storage NuGet

enter image description here

sv = 2019-02-02, sr = f, sig = ****, se = ****, sp = r "

st = 2019-11-06T10 ****, se = 2019-11-07T10 ** 1 **, sp = rl, sv = 2018-03-28, sr = f, sig = ****

первый генерируется кодом, а второй - тот, который являетсяисходящий из Microsoft Azure Storage Explorer

1 Ответ

0 голосов
/ 06 ноября 2019

В приведенном ниже коде, который я тестирую, он может сгенерировать файл sas token и скопировать файл в blob.

static async System.Threading.Tasks.Task Main(string[] args)
        {
            var accountName = "accountname";
            var accountKey = "your account key";
            var account = new CloudStorageAccount(new StorageCredentials(accountName, accountKey), true);
            var fileClient = account.CreateCloudFileClient();
            var share = fileClient.GetShareReference("windows");
            CloudFileDirectory rootDir = share.GetRootDirectoryReference();
            var file = rootDir.GetFileReference("test.json");

            var sasToken = file.GetSharedAccessSignature(new Microsoft.WindowsAzure.Storage.File.SharedAccessFilePolicy()
            {
                Permissions = SharedAccessFilePermissions.Read | SharedAccessFilePermissions.Write,
                SharedAccessExpiryTime = new DateTimeOffset(DateTime.UtcNow.AddDays(1))
            });

            var uri = file.StorageUri.PrimaryUri + sasToken;
            Uri fileuri = new Uri(uri);
            Console.WriteLine(uri);
            var blobclient = account.CreateCloudBlobClient();
            var  containerClient =blobclient.GetContainerReference("test");
            var blob=containerClient.GetBlockBlobReference("test.json");
            await blob.StartCopyAsync(fileuri);

        }

Надеюсь, что это может помочь вам, если у вас все еще есть другие проблемы, пожалуйста, не стесняйтесья знаю.

...