在c#

时间:2019-11-06 13:15:46

标签: c# sql azure azure-storage-blobs

我想访问一个位于天蓝色文件共享中的文件,将其复制到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 :(得分:0)

我测试了以下代码,它可以生成文件sas令牌并将文件复制到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);

        }

希望这可以为您提供帮助,如果仍然有其他问题,请随时告诉我。