【问题标题】:create a Share Account signature in c#在 C# 中创建共享帐户签名
【发布时间】:2019-11-06 13:15:46
【问题描述】:

我想访问位于 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

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 的代码

【问题讨论】:

  • @404 感谢帮助
  • 这个问题有更新吗?你能用我的代码创建 sas 吗?
  • @GeorgeChen 阅读了 404 的评论。记住 AddMinute(-[some value]) 很重要

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


【解决方案1】:

我测试过的以下代码,它可以生成文件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);

        }

希望对您有所帮助,如果您还有其他问题,请随时告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-17
    • 2018-04-23
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多