我想访问一个位于天蓝色文件共享中的文件,将其复制到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的代码
答案 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);
}
希望这可以为您提供帮助,如果仍然有其他问题,请随时告诉我。