首页 > 解决方案 > 如何获得 Azure 存储文件的租约?

问题描述

我在天蓝色云中有多实例 Web 应用程序。我想确保只有其中一个从 azure 存储文件中读取和处理文件。我认为使用租赁选项我可以做到这一点。

但是我无法找到适合此操作的方法。我找到了这个REST API 选项,但我正在寻找这样的东西

此示例显示 Blob 存储。什么是文件存储选项?我正在使用最新的文件存储 nuget。

编辑:

这就是我从存储文件中获取数据并处理数据的方式。

    var storageAccount = CloudStorageAccount.Parse("FileStorageConnectionString");
    var fileClient = storageAccount.CreateCloudFileClient();
    var share = fileClient.GetShareReference("StorageFileShareName");
    var file = this.share.GetRootDirectoryReference().GetFileReference("file.txt");
---processing file and renaming the file after processing---

如何在此文件上实施租用,以使其他云实例无法访问此文件?处理完文件后,我还将重命名它。

标签: azureazure-storageazure-cloud-servicesazure-storage-files

解决方案


请尝试以下方法:

        string connectionString = "DefaultEndpointsProtocol=https;AccountName=<account-name>;AccountKey=<account-key>;EndpointSuffix=core.windows.net;";
        var shareClient = new ShareClient(connectionString, "test");
        shareClient.CreateIfNotExists();
        var fileClient = shareClient.GetRootDirectoryClient().GetFileClient("test.txt");
        var bytes = Encoding.UTF8.GetBytes("This is a test");
        fileClient.Create(bytes.Length);
        fileClient.Upload(new MemoryStream(bytes));
        var leaseClient = fileClient.GetShareLeaseClient();
        Console.WriteLine("Acquiring lease...");
        var leaseId = leaseClient.Acquire();
        Console.WriteLine("Lease Id: " + leaseId);
        Console.WriteLine("Breaking lease...");
        leaseClient.Break();
        Console.WriteLine("Lease broken...");

它使用Azure.Storage.Files.SharesNuget 包。


推荐阅读